2014-02-17 63 views
1

我有兩種形式form1和form2。我使用form1中的按鈕導航到form2。在form2中,我有一個按鈕控件;點擊按鈕,我顯示messageBox。當messageBox來時,它也失去了form1的焦點,但我希望它不應該失去form1的焦點。我不擔心form2。專注於第一種形式

+0

親愛的使用form1.BringToFront() – Developerzzz

+0

所以當用戶點擊form2上的那個按鈕時,它會顯示一個消息框。當消息框關閉時,應該顯示form1並關閉form2? – Mino

+0

@Developerzzz找不到選項form1.BringToFront() –

回答

1

消息框不會像對話框一樣顯示。就像Eliran Pe'er所說的那樣,你應該像一個帶有標籤和按鈕的消息箱一樣製作一個表單,然後像這樣使用它。

MessageForm form = new MessageForm.Show(); 

如果使用ShowDialog,它將與MessageBox相同。

在您的表格1中,您可以使用TopMost property = true,以便無論如何始終保持在最前面。但是這將會讓你的表單在所有其他開放程序之上。

另一個解決方法是在用戶關閉消息框(這不是一個糟糕的選項)之後,您可以將窗體1調用到BringToFront()。爲此,您可以將Show1的實例傳遞給Show方法中的form2。在你的form2構造函數中使用該參數。

1

我不認爲有一個簡單的方法來阻止MessageBox的焦點,這是因爲MessageBox是一個對話框。 (對話框從程序中關注直到它們被關閉)

我能想到的唯一方法是創建看起來像MessageBox的新窗體,並使用它。

+0

是的,MessageBox是一個模式窗口,它持有焦點直到關閉。 –

1

試試這個

if(MessageBox.Show("something")==DialogResult.OK) 
    { 
     form1.Focus(); 
    } 

或者

if(MessageBox.Show("something")==DialogResult.OK) 
{ 
    form1.Select(); 
} 
+0

沒有你說的選項。我檢查了這一點,但仍然沒有working.Form1.ActiveForm.Activate(); Form1.ActiveForm.Select(); Form1.ActiveForm.Focus(); –

0

您正在使用的ShowDialog()方法或Show()方法來顯示你的窗口2? 如果使用ShowDialog()方法,請將其修改爲Show()。 因爲的ShowDialog()方法將不允許您將焦點移到主窗體(Form),直到你關閉子窗體(Form)

確保您使用的方法,

form2.Show() 

來顯示窗體2。

+0

我正在使用show(); –