【问题标题】:.NET C# - Form versus Designer code files for Event Wiring.NET C# - 用于事件连接的表单与设计器代码文件
【发布时间】:2025-12-05 16:25:01
【问题描述】:

我只是好奇其他人如何在 C# 中使用这种 WinForm 代码。 假设我有一个表格,我们称之为 Form1。我有一个名为 dgvMain 的 DataGridView。

你把代码放在哪里:

this.dgvMain.CellEndEdit += new DataGridViewCellEventHandler(dgvMain_CellEndEdit);

你是放在Form1代码还是Form1设计器代码中? 这个“事件连接”代码应该放在 Form1_Load 方法中吗?

我问的原因是......如果你双击 DataGridView IDE 插入代码:

 this.dgvMain.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvMain_CellContentClick);

进入设计器代码。你的“事件连接”代码应该在两个地方吗?

【问题讨论】:

    标签: c# winforms gui-designer


    【解决方案1】:

    简短的回答是肯定的。

    更长的答案是 .designer.cs 用于设计器生成的代码。如果你把自己的代码放在那里,它有可能被覆盖,搞砸 Visual Studio 中的设计时间,并降低可维护性,因为没有人希望自定义代码放在那里。

    【讨论】:

    • 这就是我担心的……我讨厌把相关代码放在两个地方。但我更讨厌代码被 codegen 覆盖!
    【解决方案2】:

    这是一个敏感的话题。在 1.1 中,您的表单文件中有此区域,但很多时候,代码将被设计者覆盖。我是从 webforms 的经验中说的,但我只能推测它在其他地方会是一样的。

    现在,您实际上将事件名称放入表单本身(它是表单设计器的属性之一),代码生成器将在部分类中推出 += 事件处理程序。我讨厌这种方式,但它就是这样。

    【讨论】:

      【解决方案3】:

      我使用 Designer 处理所有与组件相关的事件。

      我为所有对象事件使用代码

      【讨论】: