WinForm c#:检查首次运行并显示消息

时间:2015-03-11 09:28:40

标签: c# winforms

我正在创建一个包含首次运行检查的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。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您可以将其称为Form.Shown

,而不是从构造函数中调用CheckFirstRun()

Form.Shown Event

  

仅在第一次显示表单时引发显示事件;   随后最小化,最大化,恢复,隐藏,显示或   无效和重新绘制不会引发此事件

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();
}

答案 1 :(得分:1)

OnShown方法拨打CheckFirstRun

  

只要首次显示表单,就会出现“已显示”事件。

     

[...]

     

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();
    }
}

答案 2 :(得分:0)

使用此事件在表单加载后触发事件。

private void Form1_Shown(Object sender, EventArgs e) {

MessageBox.Show("First run.");

}