簡體   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