[英]WinForm c#: Check first run and show message
我正在创建一个包含首次运行检查的Winform应用程序。 我一直在关注这两篇文章:
首次运行检查应该检查应用程序是否曾经运行过,如果没有运行过,它应该向用户显示一些消息。 我遇到的问题是,此消息是在 Winform应用程序初始化/显示之前显示的,我无法查明原因。 这是我的代码:
Program.cs
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Form1.cs
public Form1()
{
this.InitializeComponent();
CheckFirstRun();
}
private static void CheckFirstRun()
{
if(Settings.Default.FirstRun)
{
MessageBox.Show(
"First run");
Settings.Default.FirstRun = false;
Settings.Default.Save();
}
它显示带有msg的消息框:“首次运行”,然后单击“确定”按钮后,它显示WinForm。 我想要实现的是先显示WinForm,如果先运行,则显示此msgBox。
有任何想法吗?
而不是调用的CheckFirstRun()
从构造函数可以调用它Form.Shown
仅在第一次显示表单时才引发Shown事件。 随后最小化,最大化,还原,隐藏,显示或无效化和重绘不会引发此事件
private void Form1_Shown(Object sender, EventArgs e)
{
CheckFirstRun();
}
覆盖OnShown
OnShown方法还允许派生类在不附加委托的情况下处理事件。 这是在派生类MSDN中处理事件的首选技术。
对继承者的说明在派生类中重写OnShown时,请确保调用基类的OnShown方法,以便已注册的委托接收事件MSDN 。
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
CheckFirstRun();
}
从OnShown
方法调用CheckFirstRun
。
每当首次显示表单时,就会发生Shown事件。
[...]
OnShown方法还允许派生类在不附加委托的情况下处理事件。 这是在派生类中处理事件的首选技术。
public Form1()
{
this.InitializeComponent();
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
CheckFirstRun();
}
private static void CheckFirstRun()
{
if(Settings.Default.FirstRun)
{
MessageBox.Show(
"First run");
Settings.Default.FirstRun = false;
Settings.Default.Save();
}
}
加载表单后,使用此事件来触发该事件。
private void Form1_Shown(Object sender, EventArgs e) {
MessageBox.Show("First run.");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.