我最近注意到Visual Studio设计器(我猜它叫做那个)已经删除了我的一些方法句柄。有没有办法阻止设计师这样做?
我的意思是: 当我的MainForm关闭时,我有一个方法叫做MainForm_Closing - 基本上是“你想保存更改吗?”提示。埋在我的Main.designed.cs中的是:
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_Closing);
在与我的MainForm对象相关的部分中。
但是,如果我对MainForm进行任何可视化更改(将控件拖到其上,编辑标签名称,更改图像属性等),Visual Studio中创建设计器的部分似乎会清除我的自定义代码
我猜测设计器在编译时被调用来创建designer.cs(这样它可以很容易地编译成IL),因此当然会删除我的自定义句柄。
BTW:我正在生成我的自定义句柄是在IntelliSense的帮助下创建的。例如,我输入:
this.FormClosing +=
并且IntelliSense建议正确的句柄并说“按TAB键插入”。)
任何帮助理解这一点(以及阻止Visual Studio移除我的句柄)都将非常感激。
答案 0 :(得分:7)
如.Designer.cs
文件中所述,您不应修改Windows Form Designer generated code region
中的代码,因为每次修改表单时都会自动生成并由Visual Studio覆盖。
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
要向控件的事件添加处理程序,请使用“属性”对话框:
答案 1 :(得分:2)
你不应该修改designer.cs,在文件的顶部甚至添加注释,它是由工具生成的。每次在设计器中进行更改时,都会重新生成designer.cs,因此请不要将自定义代码放在那里。
您的自定义代码应该在MainForm.cs或某个部分类文件中。永远不要修改designer.cs文件,因为下次打开设计器时代码会丢失。