为什么GotFocus事件会从Designer中删除自己?

时间:2016-03-21 05:32:11

标签: c# winforms

我想将一个GotFocus事件添加到Windows窗体文本框中,所以我使用了this问题中描述的方法;它有效,但在我运行我的应用程序几次后,这段代码会自行删除,我不知道为什么。

这是不断删除自己的代码:

txtID.GotFocus += txtID_GotFocus;

2 个答案:

答案 0 :(得分:2)

肯定是另一个证据,说明为什么你不应该触及设计师生成的代码,并且应该注意这个警告:do not modify the contents of this method with the code editor.

作为解决方法,使用Enter事件(建议使用)。您也可以在Load形式的事件中分配处理程序。

修改
nikita正确提到了原因,因为您没有使用设计师惯例。有关更多信息,请参阅他的answer

答案 1 :(得分:2)

它消失了,因为在添加事件处理程序时,您不会使用WinForms设计器使用的约定。

您使用GotFocus还是Enter事件并不重要。如果您(在Designer.cs中)以这种方式手动添加事件处理程序:

txtID.Enter += txtID_Enter;

然后,下次你在设计师表面移动控件时,它总会从设计师身上消失。

您必须以这种方式添加事件处理程序:

txtID.GotFocus += new System.EventHandler(txtID_Focus);
txtID.Enter += new System.EventHandler(txtID_Enter);

并且没有任何东西会消失,因为它是设计师期望代码的方式。