【发布时间】:2018-02-02 21:30:19
【问题描述】:
我有一个像这样的自定义 TreeView 类:
using System.Windows.Forms;
namespace My.Namespace
{
public partial class SimpleTree : System.Windows.Forms.TreeView
{
private TreeNode topNode; //////////
private TreeNode lowerNode1;
private TreeNode lowerNode2;
private TreeNode lowerNode3;
public SimpleTree()
{
InitializeComponent();
BuildTree();
TreeViewEventArgs eventArgs = new TreeViewEventArgs(topNode, TreeViewAction.Unknown);
this.ExpandAll(); // must be after adding the nodes
}
private void BuildTree()
{
this.Name = "Simple Tree";
topNode = new TreeNode("Top Node");
topNode.Name = "Top Node"
this.Nodes.Add(topNode);
lowerNode1 = new TreeNode("Lower Node 1");
lowerNode1.Name = "Lower Node 1";
topNode.Nodes.Add(lowerNode1);
lowerNode2 = new TreeNode("Lower Node 2");
lowerNode2.Name = "Lower Node 2";
topNode.Nodes.Add(lowerNode2);
lowerNode3 = new TreeNode("Lower Node 3");
lowerNode3.Name = "Lower Node 3";
topNode.Nodes.Add(lowerNode3);
}
// This is a simplified example, much more functionality here in real code
}
}
我在 ProjectView.cs 中包含了这个 SimpleTree(它有很多组件)。
在 ProjectView.Designer.cs 中有这样的:
private SimpleTreeView trvSimple;
this.trvSimple = new My.Namespace.SimpleTreeView();
this.trvSimple.BackColor = System.Drawing.Color.White;
this.trvSimple.Location = new System.Drawing.Point(3, 65);
this.trvSimple.Name = "trvSimple";
this.trvSimple.Scrollable = false;
this.trvSimple.Size = new System.Drawing.Size(128, 109);
this.trvSimple.TabIndex = 1;
this.trvSimple.Text = "trvSimple";
this.trvSimple.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.trvSimple_BeforeCollapse);
this.trvSimple.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.trvSimple_BeforeSelect);
这一切都有效。树看起来像:
顶部节点
-- 下层节点 1
-- 下层节点 2
-- 下层节点 3
但是,当我在 ProjectView 中更改任何其他内容时,可视化编辑器会将此代码添加到 ProjectView.Designer.cs
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Lower Node 1");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Lower Node 2");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Lower Node 3");
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Top Node", new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3});
所以现在看起来像这样:
顶部节点
-- 下层节点 1
-- 下层节点 2
-- 下层节点 3
顶级节点
-- 下层节点 1
-- 下层节点 2
-- 下层节点 3
如何防止添加此代码?
【问题讨论】: