【问题标题】:Designer seems to be removing handles in designer.cs设计师似乎正在删除 Designer.cs 中的句柄
【发布时间】:2012-01-26 15:17:53
【问题描述】:

我最近注意到 Visual Studio 设计器(我猜它就是这样称呼的)一直在删除我的一些方法句柄。有没有办法阻止设计师这样做?

我的意思的一个例子是这样的: 当我的 MainForm 关闭时,我有一个名为 MainForm_Closing 的方法 - 基本上是“你想保存更改吗?”迅速的。埋在我的 Main.design.cs 中的是一行:

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

在与我的 MainForm 对象相关的部分中。

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

我猜想在编译时调用设计器来创建designer.cs(以便它可以轻松编译为IL),因此理所当然地删除了我的自定义句柄。

顺便说一句:我正在生成自定义句柄,这是在 IntelliSense 的帮助下创建的。例如我输入:

this.FormClosing +=

IntelliSense 会建议正确的句柄并说“按 TAB 键插入”)。

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

【问题讨论】:

  • 您正在向 Designer.cs 添加代码?
  • 您是从“属性”窗格还是直接在 *.designer.cs 文件中添加了 EventHandler? P类似的问题回答得很好。 stackoverflow.com/questions/3786512/…
  • 仅处理 FomrClosing 和 TreeView.MouseClick 等方法。我认为我应该将此代码添加到其他地方?
  • 是的,在属性窗格中添加 EventHandlers,而不是直接在设计器文件中。

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


【解决方案1】:

正如.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>

要为控件的事件添加处理程序,请使用“属性”对话框:

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 2014-02-07
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多