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