这是一个令人遗憾的问题...... 我在那里添加了很多支票,如:
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
但是,一旦我将事件处理程序添加到其中一个表单事件中,我的所有检查都会消失-_-
我能做些什么来保持那些但能够通过设计师改变形式?
我使用VC#Express 2010
答案 0 :(得分:4)
.designer.cs
文件的重点是,每次重新设置时,都会重新设置设计器。
如您所见,不应编辑生成的文件,因为它们会重新生成,并且您所做的任何更改都将丢失。
在类构造函数中进行这些更改。
答案 1 :(得分:2)
您正在修改设计器中的代码。为了能够生成预览,禁止在自动生成的部分中编写具有高于1的圈复杂度的任何代码。这意味着没有if,loop或方法调用。
相反,你应该在InitializeComponents()之后的其他地方进行这些更改! 在使用控件元素填充数组时(为了以后可以方便地访问它们),我通常会创建一个单独的方法InitializeDynamic()。
注意:您可以更改设计器部分中的代码,只能更改设计中可以直接调整的代码(因此您可以在设计器中完成)。
答案 2 :(得分:1)
不,Designer文件适用于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
}