无论如何,如果我在C#中通过表单设计器编辑表单,是否禁止删除我在Form1.Designer.cs中所做的更改?
这是一个令人悲伤的问题……无论如何,如果我在C#中通过表单设计器编辑表单,是否禁止删除我在Form1.Designer.cs中所做的更改?,c#,visual-studio-2010,express,windows-forms-designer,C#,Visual Studio 2010,Express,Windows Forms Designer,这是一个令人悲伤的问题…… 我在其中添加了许多支票,如: System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Profiles"); 替换为: #if DEMO System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Lines"); #else System.Windows.Form
我在其中添加了许多支票,如:
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Profiles");
替换为:
#if DEMO
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Lines");
#else
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Profiles");
#endif
但一旦我将事件处理程序添加到其中一个表单事件中,我的所有检查都将消失--我可以做些什么来保留这些,但可以通过designer更改形式?
我使用的是VC#Express 2010文件
.designer.cs
的要点是,每次更改设计器时都会重新生成该文件
如您所见,不应编辑生成的文件,因为它们会重新生成,并且您所做的任何更改都将丢失
在类构造函数中进行这些更改。否,设计文件是针对VS设计器的,将随意重新生成 您可以通过向类构造函数添加代码来实现所需的功能:
public Form1()
{
InitializeComponent();
#if DEMO
var changeNodes = treeView1.Nodes.Find("Profiles", true);
if (changeNodes.Length>0)
{
foreach(TreeNode node in changeNodes)
{
node.Name = "Lines";
node.Text = "Lines text";
// add/set whatever else you need in demo mode
}
}
// or remove all nodes and add new ones
#endif
}
您正在设计器中修改代码。为了能够生成预览,禁止在自动生成的部分中编写圈复杂度高于1的任何代码。这意味着没有if、循环或方法调用 相反,您应该在InitializeComponents()之后的其他地方进行这些更改! 在用控制元素填充数组时(为了以后更容易访问它们),我通常使用单独的方法InitializeDynamic()
注意:您可以在designer部分中更改代码,仅更改可以直接在设计中修改的代码(因此您可以在designer本身中进行修改)。err,treeNode1在表单构造函数中是不可见的