为什么调试器会删除我的代码?

时间:2014-10-12 11:37:50

标签: c# winforms visual-studio visual-studio-debugging

使用VS2013 Pro,WinForms,调试器会不断删除我的事件处理程序。 (我将它们放在Form.Designer.cs文件中)

我最近才注意到它,我很肯定我没有改变任何设置。

其他人可以复制这个或者它只是我系统上的东西吗?

复制步骤:

  1. 创建新项目C#WinForms
  2. 添加拆分容器>在Base容器的两个面板内,嵌套另一个拆分容器。
  3. 在Form.Designer.Cs文件中,将Click事件处理程序连接到嵌套的panel 1容器。
  4. 运行。 - 单击容器 - 应该可以正常工作。
  5. 退出调试器>更改嵌套面板1的颜色属性。
  6. 运行>不能再点击了吗?
  7. 检查代码>事件处理程序已被删除?

1 个答案:

答案 0 :(得分:4)

如果您手动添加了事件处理程序,那么无论何时从Designer更改某些内容,Form.Designer.cs都会重新生成并删除您的事件处理程序(在代码中手动添加的事件处理程序)

您需要做的是从Control属性添加事件处理程序。

例如,如果您在Designer中对此进行编码:

myControl.Click += myClickHandler; 

只要您在设计器中更改某些内容,它就会被删除,因为整个.Designer.cs文件已重新生成,并且由于某种原因,VS不知道手动添加的事件处理程序。

您将看到如果您从Control属性窗口(在设计器中)添加事件处理程序,生成的代码将如下所示:

myControl.Click += new EventHandler(myClickHandler);

另一种解决方法是在.Designer.cs类之外添加处理程序,但简单的方法是从Designer添加处理程序:)。