2010-05-13 102 views
1

我創造了C#2008一個Windows應用程序,將有大約8-10對話框。我希望這些表格在整個項目的整個過程中都存在。哪裏是創建和存儲對象的最佳地點?最好的地方對象

我來自Delphi,其中Form對象通常存儲在全局變量中。

我很想在靜態的Program類中做到這一點。我應該把它們放在主窗體中嗎?

謝謝你幫助一個C#福利局出來。

+0

謝謝你的提醒,大家好。我將根據需要創建表單,而不是事先創建它們。 德爾福其中默認行爲的形式自動在應用statup創建再來。 再次感謝。 – 2010-05-13 15:25:34

回答

0

一般來說,沒有理由存儲重用對​​話框。典型的情況是:

using(MyDialog dlg = new MyDialog()) { 
    dlg.MyTextProperty = "Are you realy sure, you want do XY operation?"; 
    dlg.MyNumberProperty = 15; 

    DialogResult rslt = dlg.ShowDialog(this); // the "this" is current form or control 
    if (rslt == DialogResult.OK) { 
     object userInput = dlg.UserInput; 
     // do what you want with user input 
    } 
} 
4

爲什麼你希望這些對話框在程序的整個生命週期中都存在? 一般,在需要他們的時候,習慣,然後被銷燬創建對話框。如果您需要再次顯示,請創建一個新的並使用它。

如果你有一個合理的理由讓他們周圍,那很好,但不要使用Program類。我假設你的應用程序有一個主要的形式,所有其他人都可以從中啓動。如果是這種情況,請將它們變爲該表單上的實例變量並從那裏使用它們。

1

表格是昂貴的對象,它們有很多內部狀態。如果創建數據很昂貴,緩存就很有意義。表單行爲完全相反,創建他們的數據很便宜。 Windows將數據換出到頁面文件後,使用緩存數據變得非常昂貴。這很可能發生在你的案例中,對話不會很頻繁地使用。它其實需要更長顯示對話框。

如果您的數據填寫對話框的開銷很大,那麼緩存該數據,而不是表單。