2012-01-26 33 views
1

我最近注意到Visual Studio設計器(我猜這就是所謂的)已經刪除了一些我的方法句柄。有沒有辦法阻止設計師這樣做?設計師似乎正在刪除designer.cs中的句柄

我的意思是這樣的一個例子: 我有一個當我的MainForm關閉時調用MainForm_Closing的方法 - 基本上是「你想保存更改嗎?」提示。埋在我的Main.designed.cs中是行:

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_Closing); 

在與我的MainForm對象有關的部分內。

但是,如果我對MainForm進行任何視覺更改(將控件拖動到它上面,編輯標籤名稱,更改圖像屬性等),似乎創建設計器的Visual Studio部分會清除我的自定義碼。

我猜測設計器被調用來在編譯時創建designer.cs(這樣它可以很容易地編譯爲IL),因此當然會刪除我的自定義句柄。

順便說一句:我正在生成我的自定義句柄正在智能感知的幫助下創建。例如,我鍵入:

this.FormClosing += 

並且智能感知提示正確的句柄並且顯示「按Tab鍵插入」)。

任何幫助理解這一點(並停止從刪除我的手柄Visual Studio)將不勝感激。

+0

您添加代碼designer.cs? –

+0

您是從屬性窗格中添加EventHandler還是直接在* .designer.cs文件中添加EventHandler?類似的問題回答得很好。 http://stackoverflow.com/questions/3786512/changing-autogenerated-code-in-a-c-sharp-windows-forms-application-project – Lloyd

+0

只有像FomrClosing和TreeView.MouseClick等方法的句柄。我認爲我應該在其他地方添加此代碼? –

回答

7

.Designer.cs文件中所述,您不應修改Windows Form Designer generated code region中的代碼,因爲每次修改表單時都會自動生成並由Visual Studio覆蓋。

/// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 

要處理程序添加到您的控件的事件,使用屬性對話框: enter image description here

2

您不應該修改designer.cs,在文件頂部甚至會添加註釋,它是由某種工具生成的。每次在設計器中進行更改時,designer.cs都會重新生成,因此請勿將自定義代碼放在那裏。

您的自定義代碼應該位於MainForm.cs或部分類文件中。切勿修改designer.cs文件,因爲下次打開設計器時代碼將丟失。