2015-04-28 157 views
0

當表單打開時,是否有任何方法可以立即彈出消息框?我只想在打開時顯示一條關於如何使用表單的簡短消息。我試過立即在Windows窗體中顯示MessageBox?

private void myForm_Load(object sender, EventArgs e) 
{ 
    DialogResult dialogOpen = MessageBox.Show("Use the navigation menu to get started.", "Welcome!", MessageBoxButtons.OK); 
} 

但它不起作用。

+0

是,肯定是有辦法,你應該做一個谷歌搜索上 [Form.DialogResult地產(https://msdn.microsoft.com/en-us/library/system.windows .forms.form.dialogresult%28v = vs.110%29.aspx)也閱讀了WinForms事件生命週期方面的表單加載顯示等等...這裏是你需要閱讀@MorganPeters [Windows窗體中的事件順序](https://msdn.microsoft.com/en-us/library/86faxx0d%28v=vs.110%29.aspx) – MethodMan

+5

嘗試使用'Shown'事件而不是'Load '。 –

+1

從UX觀點來看,我只有2分錢:在我有機會做任何事情之前馬上被MessageBox擊中會讓我想用生鏽的叉子撕裂我的眼睛。當然,必須有一個更溫和/更好的方式來提示用戶?一個彩色的標籤,也許? –

回答

0

我不明白爲什麼它不會在Form_Load中工作。絕對可以像別人指出的那樣,通過將它放在表單初始化之下來進行操作。

雖然,因爲你只是顯示一個消息框,我不認爲有任何理由來存儲結果,所以一個簡單的MessageBox.Show(message);應該做的伎倆。

作爲@ s.m。從用戶體驗的角度來看,一旦應用程序啓動,就會立即發出通知,這會非常令人討厭,至少如果每次都有它的話。就個人而言,我會創建一個布爾值設置變量,在第一次顯示消息時將其設置爲true,並且只在設置爲false時(即第一次顯示消息時)才顯示它。

private boolean splashShown = Properties.Settings.Default.splashShown; 

private void Form_Load(object sender, EventArgs e) 
{ 
    if (!splashShown) 
    { 
     MessageBox.Show("message"); 
     myForm.Properties.Settings.Default.splashShown = true; 
     myForm.Properties.Settings.Default.Save(); 
    } 
} 

並設置splashShown設置您的表單屬性。

如果問題是,你的Form_Load()方法實際上並沒有連接到您的Form.Load()事件,你可以雙擊在設計表單窗口,它會自動創建Form_Load()基方法爲你和它連接到Form.Load()事件

3

在Form_Load中顯示MessageBox對我來說工作得很好。我直接從原始文章複製/粘貼代碼,並且它工作正常。我在Windows 8.1上使用.NET Framework 4.5。

你確定你的Load事件處理程序被調用嗎?也許它沒有正確地連接到Load事件。

+0

謝謝,它沒有被正確調用! –

0

是否有理由使用窗體的Load方法?如果不是,你可以在form的構造函數中使用它。如果您希望在表單加載後立即顯示它,則應在表單初始化後在構造函數中執行此操作。它應該是這個樣子:

public partial class myForm : Form 
{ 
    public myForm() 
    { 
     InitializeComponent(); 

     DialogResult dialogOpen = MessageBox.Show("Use the navigation menu to get started.", "Welcome!", MessageBoxButtons.OK); 
    } 
} 

構造函數(public myForm())和InitializeComponent();應該會自動由Visual Studio創建後添加到窗體。

+0

儘管此解決方案可能有效,但謹慎地進行非初始化操作。 – Cameron

+0

在這種情況下,顯示一個簡單的MessageBox應該不是問題,或者我在這裏丟失了什麼? – DangerousDetlef

0

我已經使用這個,它工作正常。應用程序開始之前先調出消息框。

InitializeComponent(); 
MessageBox.Show("put your message here"); 
0

Form_Load事件發生在表單真正可見之前。 我使用:

static private bool splashShown = false; 
    private void Form1_Activated(object sender, System.EventArgs e) 
    { 
     if (!splashShown) 
     { 
      MessageBox.Show("message"); 
      splashShown = true; 
     } 
    }