2013-04-09 88 views
-2

我有2種形式;我的主要形式命名爲Form1和我的第二種形式命名Form2如何在開始時在主窗體頂部顯示第二個窗體?

我的主要形式,在開始顯示出來了,我想顯示Form2太多,但它Form1下顯示出來。 我希望它顯示在我的主窗體上。

我試圖設置Form2TopMost屬性到true然後false但它沒有工作。 我也試圖創建一個不同的線程Form2出現在Form1之後,在這種情況下Form2很快出現然後消失。

+0

'TopMost'應該有實際工作,但只是作爲一種臨時解決方案。 – Neolisk 2013-04-09 20:00:53

回答

2

顯示的Form1Form2Shown事件處理程序:

private void Form1_Shown(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Show(); 
} 

可以使用ShowDialog()而不是Show()如果你想Form2是模態。

+1

解決了它!謝謝。 – user2263265 2013-04-09 19:43:55

+1

+1。從來不知道「Shown」事件。雖然我不確定爲什麼這個工作不需要指定所有權,就像'form2.Show(this)'。它是否是佈局順序的一個功能,它默認在項目中最後創建的窗體的頂部創建窗體? – Neolisk 2013-04-09 19:59:30

+0

@Neilisk是的,Windows根據它們在屏幕上的外觀進行排序。 [SetWindowPos](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v = vs.85).aspx)方法用於設置表單顯示時的Z順序。 – 2013-04-10 05:52:34

0

在Form1的加載事件中添加以下代碼:

Form2 form2 = new Form2(); 
      form2.TopMost = true; 
      form2.Show(); 
+0

謝謝。但我不希望Form2成爲TopMost。我只想讓它在啓動時顯示在Form1的頂部。 – user2263265 2013-04-09 19:37:33

0
new Form2().ShowDialog() 

這也將鎖定Form1中,直到窗體2被關閉

+0

謝謝。這是一個有效的答案,但我不希望Form1被鎖定。還是謝謝你。 – user2263265 2013-04-09 19:45:13

相關問題