2013-08-20 170 views
-2

我想知道。應用程序如Microsoft Word,Excel等如何創建一個空白的新窗體,就像我們創建了另一個新窗體。每次點擊一個按鈕創建一個新窗體

我嘗試的代碼:

this.Hide(); 

Form2 secondaryForm = new Form2(); 
secondaryForm.ShowDialog(); 

this.Close(); 

上面的代碼來創建新的空白表單(新形式),但是這僅是時間有限。我想知道的是,這樣的應用程序如何在如此無限的時間內創建一個新的空白表單(新表單)?

注:我所說的不限時間的意思是:我們可以創建一個新的表單,表單將永遠被創建,不管我們有多少次單擊「新建」按鈕,提前

謝謝!

+2

你是什麼意思'無限time'? –

+0

我的意思是,當我點擊「按鈕」(這是創建一個新的形式),新的形式將永遠被創建,不管我們有多少時間是點擊「按鈕」 – Reinhardt

+2

來電秀,而不是ShowDialog的和不關閉父窗體 –

回答

2

上面的答案是好的,但我想擴大它們。

你的代碼是不工作的原因是因爲你關閉主要形式

主要形式是在運行時程序啓動的形式。如果你創建一個簡單的WinForm,並期待在main功能,你會看到類似

 Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 

,當您關閉Form1中你回來這裏繼續運行,完成的主要功能和退出程序。

你可以做什麼,對別人都建議之上,是建立一個主要形式不可見,並創立主窗體的右後創造另一種形式。通過這種方式,您可以隨意關閉和打開表單,並且不會關閉該程序。

至於你問什麼,能夠打開幾種形式。你可以做的僅僅是這樣做的:

Form frm = new Form();// Creating a form 
frm.Show();// displaying the form 

ShowDialog方法做什麼show呢,又凍結打開它的形式。所以你不希望它可能

+1

嗯,是的,沒有想到這個設置是默認的。但是有一個比你提出的更好的解決方案,只需[將ShutdownMode更改爲AfterAllFormsClose](http://stackoverflow.com/a/2751234/366904)。 –

+0

@CodyGray omg!謝謝!棒極了。從來沒有這樣的想法。哇......我只是想我可以用它在任何時候都... –

+0

這是VB.NET的應用程序屬性頁面上的內置選項。我不確定爲什麼它很好地隱藏在C#中。 –

0

以下代碼將允許您在不關閉主窗體的情況下打開任意數量的窗體。

//this.Hide(); 

Form2 secondaryForm = new Form2(); 
secondaryForm.Show(); 

//this.Close(); 
0

這很簡單,他們只是創建所需的表格類的新實例並調用其Show method

MyForm frm = new MyForm(); 
frm.Show(); 

您當前使用的ShowDialog方法,它創建了一個模態對話框 - 即一個阻止用戶與其他應用程序進行交互,直到用戶解散它爲止。這不是你想要的。

除非您真的要關閉原始表單,否則您也不需要調用HideClose方法。 Office應用程序不這樣做 - 「新建」只是打開一個新窗口,保留當前的一個。

如果想打開一個新的時,關閉原來的形式,像這樣做:

// Create and display new form 
MyForm frm = new MyForm(); 
frm.Show(); 

// Close this form 
this.Close(); 
0

我猜你想produce形式一旦我們點擊按鈕,表格應無論對錶格數量的限制生產和顯示。您可以使用Timer用於此目的:

//Place this code in your main form constructor 
Timer t = new Timer {Interval = 100};  
t.Tick += (s,e) => { 
    new Form2().ShowDialog(); 
}; 
button1.Click += (s,e) => { 
    t.Start(); 
}; 
//NOTE: you have to use the stop button of the IDE to stop this, 
//it will run continuously producing new forms and showing them 
//without allowing you to touch the Close button of your main form. 

你應該限制表格的數量,因爲我們不能產生儘可能多的形式可能,我測試過了。在System.dll拋出272種形式的StackOverflowException打開:)))。嘗試添加一個count變量,並停止計時器,當它達到一個數字,例如一個272)

相關問題