事件处理程序自动删除

时间:2014-02-03 11:19:43

标签: c# winforms

我在Designer InitializeComponents()中创建了一些事件处理程序。问题是,我移动另一个表单后,我手动创建的大多数事件处理程序总是不显示(删除)。例如,我在PictureBox中创建了一些Dragform,如下所示:

    this.picLogo.MouseDown += picLogo_MouseDown;
    this.picLogo.MouseMove += picLogo_MouseMove;
    this.picLogo.MouseDown += picLogo_MouseDown;

移动PictureBox(picLogo)后,该代码消失了。我正在使用Visual Studio 2012.这是一个Visual Studio问题,还是我错过了什么?

2 个答案:

答案 0 :(得分:2)

您不应该手动向设计人员添加事件,如果visual studio中的某些内容发生变化,将覆盖您的更改。有一条评论告诉你 -

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

尝试在后面的代码中添加事件(例如,在调用InitializeComponent之后,或在表单加载时),或者在设计模式下选择控件,查看属性,ciick事件按钮(在属性顶部,它看起来像一个闪电螺栓),你也可以在那里添加事件。

答案 1 :(得分:1)

InitializeComponents方法有很好的评论:

#region Windows Form Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
   // ...
}

#endregion

此评论清楚地表明您不应使用代码编辑器修改此方法的内容。为什么?因为区域名称状态,此方法由表单设计者生成。每次重新生成时,所有手动更改都将消失。在设计器中更改表单时会重新生成此方法(例如,移动某些控件,如PictureBox)。