2014-10-12 56 views
1

使用VS2013 Pro,WinForms,調試器不斷刪除我的事件處理程序。 (我把它們放在Form.Designer.cs文件中)調試器爲什麼會刪除我的代碼?

我剛開始注意到它,我很積極,我沒有改變任何設置。

其他人可以複製這個,或者它只是在我的系統上的東西?

步驟複製:

  1. 創建新項目C#的WinForms
  2. 添加拆分容器>在基地容器,巢另一個分割容器的第二小組。
  3. 在Form.Designer.Cs文件中,將Click事件處理程序掛接到嵌套面板1容器。
  4. 運行。 - 點擊容器 - 應該可以正常工作。
  5. 退出調試器>更改嵌套面板1的顏色屬性。
  6. 運行>無法再單擊?
  7. Inspect Code>事件處理程序已被刪除?
+6

'Form.Designer.cs'是那個說「不修改」的嗎?如果你把代碼放在'Form.cs'中,會發生什麼? – 2014-10-12 11:39:12

+0

是的,我知道,但是我一直寫代碼!保持整潔。 – KidCode 2014-10-12 11:40:13

+5

@KidCode你不認爲注意文件不應該被手動修改的警告是個好主意嗎? – Dan 2014-10-12 11:40:42

回答

4

如果添加事件處理程序手動然後任何時候你從Form.Designer.cs再生的設計改變的東西,並會刪除你的事件處理程序(代碼中手動添加的那些)

你什麼需要做的是從Control屬性中添加事件處理程序。

例如,如果你在設計器代碼如下:

myControl.Click += myClickHandler; 

將隨時刪除你想改變什麼的設計師,因爲整個文件了.Designer.cs再生以及由於某種原因,VS是不知道手動添加的事件處理程序。

你;會看到,如果從控件屬性窗口中添加事件處理程序(在設計器)生成的代碼看起來就像這樣:

myControl.Click += new EventHandler(myClickHandler); 

另一個解決辦法是增加外部的處理程序。 Designer.cs類,但簡單的方法是從Designer中添加處理程序:)。

相關問題