我在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问题,还是我错过了什么?
答案 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)。