繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM