Designer似乎正在删除designer.cs中的句柄

时间:2012-01-26 15:17:54

标签: c# winforms visual-studio-2008 windows-forms-designer

我最近注意到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移除我的句柄)都将非常感激。

2 个答案:

答案 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>

要向控件的事件添加处理程序,请使用“属性”对话框: enter image description here

答案 1 :(得分:2)

你不应该修改designer.cs,在文件的顶部甚至添加注释,它是由工具生成的。每次在设计器中进行更改时,都会重新生成designer.cs,因此请不要将自定义代码放在那里。

您的自定义代码应该在MainForm.cs或某个部分类文件中。永远不要修改designer.cs文件,因为下次打开设计器时代码会丢失。