我知道,该.designer.cs文件包含Visual Studio中可视窗体设计器生成的数据.但是,我还有一些额外的方法,我想将它们放入.designer.cs文件中,因为它们负责较低级别的表单处理(例如,我的可视状态管理器的部分).
文件中的InitializeComponent方法.designer.cs有一条注释说明它是自动生成的,不应由用户修改.此限制是否仅适用于该方法,或者该.designer.cs文件是否应由用户编辑?我注意到,除其他外,它包含Dispose()用户可能想要修改的方法 - 建议第一个选项.不过我想确定一下.
你永远不应该修改.designer.cs.期.您的更改将被无限制地覆盖.
更新:为了更有帮助,C#自v3(VS 2008)包含了部分方法,许多设计人员现在将使用这些方法来实现自定义行为.
此指令适用于完整的designer.cs文件.因为所有编写的代码都是自动生成的.
您不应该对此文件进行任何修改,因为它可以随时重新创建...这将删除您的方法...
如果你想将代码与表单代码文件分开,那么我建议创建另一个包含部分类的文件,你可以在其中放置所有这些方法......
希望能帮助到你...
我认为其他答案正在简化太多.
首先,我完全同意编辑.designer文件几乎总是一个坏主意,但有一些情况我已经这样做了,感觉它是好的和正确的,并没有被烧毁.
假设我创建了一个标签并意外地双击.Designer在我的主.cs文件中创建一个方法然后删除:
private void label1_Click(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
好吧,现在代码将不会构建,除非我还从我的.designer文件中删除以下内容:
this.label1.Click += new System.EventHandler(this.label1_Click);
Run Code Online (Sandbox Code Playgroud)不太常见的是,将事物添加到表单或面板(或菜单!)的顺序很重要,并且在代码中更改此顺序比在Designer GUI中更容易.根据我的经验,VS 2010总是对此有所了解,更新其GUI的信息,并重新绘制其预览.只记得关注Add()方法 - 声明的顺序变量通常无关紧要.
如果您设置了一个导致将行添加到.designer文件的属性,则删除该行会快速获取并且Designer会刷新.也许使用GUI更改属性更明智/更安全,但我认为删除该行更清晰.
不在此区域内的代码#region Windows Form Designer generated code只会生成一次.移动是安全的,并且正如其他人在其他地方推荐的那样(/sf/answers/456895071/)Dispose(bool),如果您正在修改它或添加Dispose()方法,那么实际移动该方法会非常有意义.理想情况下应该坐在旁边Dispose(bool).
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
Run Code Online (Sandbox Code Playgroud)免责声明:
也就是说,我只尝试过VS 2010 Ultimate; 你的里程可能会在1-3以上变化,但只要.designer是在Dispose(bool)外面的部分课程,4应该是安全的#region.我还确保在解决之前将.designer文件的最新版本提交到源存储库中.
通过承认这种Dispose(bool disposing)模式,我并不是要推广这种方法.似乎有很好 的理由,以简单地使用Dispose()在大多数情况下,只有做多的非托管资源,每个封装一到一个在专用的一次性对象.