2014-02-12 44 views
0

我想將我的Form::initializeComponent()方法分離成許多方法。即,創建選項卡1的方法,創建選項卡2並在Form::initializeComponent()內調用這些方法的方法。我這樣做是爲了讓代碼更易於管理和可讀 - 它更容易跳到createTab3()並找出發生了什麼,而不是搜索數百行代碼來查找tab3的創建。InitialiseComponent中的方法導致設計器和運行時錯誤

例子:

private void InitializeComponent() 
{ 
    // Default form creation and initialisation code here 

    createTab1(); 
    createTab2(); 
    createTab3(); 

    // Show form code here 
} 

我的問題:的設計師,我無法查看我的對話 - 我得到一個錯誤說The variable tab1 is either undeclared or was never assigned。那是因爲該代碼發生在createTab1()。我也無法運行我的Release build .exe,它崩潰了。如果我將createTab1()(和所有其他選項卡方法)中的所有代碼放入initializeComponent()之內,那麼發行版.exe運行良好。所以崩潰是由createTab1()代碼不直接在initializeComponent()內引起的。

有沒有一種方法,我仍然可以在initializeComponent()裏面有方法createTab1()並且讓設計師工作,並且不會讓我的發行版崩潰?

或者我必須將我所有的代碼放在initializeComponent()之內嗎?也許這是一種告訴VS2010,方法createTab1()應該在「設計模式」中執行還是什麼?

回答

0

雖然您可以將代碼添加到InitializeComponent方法中,但建議您不要重新創建,而是每次更改時都要更改設計器中的UI。

也許你可以將你的代碼移動到你的form_load方法中,或者如果你想編寫自己的代碼來創建控件,甚至在調用InitializeComponent之後,否則如果你使用設計器,那麼將代碼自動生成的代碼保持原樣。

相關問題