2012-01-26 27 views
1

我最近注意到Visual Studio设计器(我猜这就是所谓的)已经删除了一些我的方法句柄。有没有办法阻止设计师这样做?设计师似乎正在删除designer.cs中的句柄

我的意思是这样的一个例子: 我有一个当我的MainForm关闭时调用MainForm_Closing的方法 - 基本上是“你想保存更改吗?”提示。埋在我的Main.designed.cs中是行:

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_Closing); 

在与我的MainForm对象有关的部分内。

但是,如果我对MainForm进行任何视觉更改(将控件拖动到它上面,编辑标签名称,更改图像属性等),似乎创建设计器的Visual Studio部分会清除我的自定义码。

我猜测设计器被调用来在编译时创建designer.cs(这样它可以很容易地编译为IL),因此当然会删除我的自定义句柄。

顺便说一句:我正在生成我的自定义句柄正在智能感知的帮助下创建。例如,我键入:

this.FormClosing += 

并且智能感知提示正确的句柄并且显示“按Tab键插入”)。

任何帮助理解这一点(并停止从删除我的手柄Visual Studio)将不胜感激。

+0

您添加代码designer.cs? –

+0

您是从属性窗格中添加EventHandler还是直接在* .designer.cs文件中添加EventHandler?类似的问题回答得很好。 http://stackoverflow.com/questions/3786512/changing-autogenerated-code-in-a-c-sharp-windows-forms-application-project – Lloyd

+0

只有像FomrClosing和TreeView.MouseClick等方法的句柄。我认为我应该在其他地方添加此代码? –

回答

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

2

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

您的自定义代码应该位于MainForm.cs或部分类文件中。切勿修改designer.cs文件,因为下次打开设计器时代码将丢失。