2014-07-15 91 views
0

我有以下代碼,它顯示窗體爲ShowDialog()。MessageBox.Show()不顯示頂部的ShowDialog窗體

static void Main() 
{ 

    DialogResult oDialogResult = oLogin.ShowDialog(); 

    if (oDialogResult == DialogResult.OK) 
    { 
     try 
     { 
      //do something here 
     } 
     catch (Exception Ex) 
     { 
      MessageBox.Show(Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
} 

的問題是該呼叫MessageBox.Show沒有出現在的前方(頂部)已經示出oLogin.ShowDialog()形式的消息框。你知道爲什麼嗎 ?

我試着改變MessageBox.Show以包含所有者窗體,如下所示;

MessageBox.Show(oLogin, Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error); 

但仍然有同樣的問題。

+1

有點明顯。您可以讓oLogin在分配DialogResult屬性之前觸發一個事件。類型爲CancelEventHandler的事件將是合乎邏輯的選擇,因此您也可以停止關閉對話框。與OpenFileDialog.FileOk事件進行比較。 –

回答

0

更改代碼在Main()方法是什麼Visual Studio項目模板最初創建: -

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(oLogin); 

然後,你的try/catch塊添加到任何類oLogin

一個的FormClosing事件處理程序
-1

嘗試:

DialogResult oDialogResult = oLogin.ShowDialog(this); 
+1

如果我添加'這個'我得到這個錯誤。 '關鍵字'this'在靜態屬性靜態方法或靜態字段初始值設定項中無效'。以上代碼的這一部分位於應用程序的靜態無效Main()方法中。 – Tommassiov

+0

對不起,我雖然是在一個表格內。 – Oscar

1

在貼上沒有做你描述的代碼 - 通過在MessageBox顯示的時間,其他的對話框已經關閉 - 所以沒有對話,以顯示的前面。

粘貼您的實際代碼或者提出您的問題。

+0

是的,這是問題所在。另一個對話框已關閉,但爲什麼? – Tommassiov

+0

@ Tommo1977因爲oLogin有響應某些按鈕點擊而關閉表單的代碼? – Oscar

+0

因爲它是如何工作的。 – Emi987