我使用一些默认的TreeNodes创建了System.Windows.Forms.TreeView类的子类:
public class SimulationTreeView : TreeView
{
private TreeNode unitLoadsNode;
private TreeNode conveyorsNode;
private TreeNode aislesNode;
public SimulationTreeView()
{
this.unitLoadsNode = this.Nodes.Add("Unit Loads");
this.conveyorsNode = this.Nodes.Add("Conveyors");
this.aislesNode = this.Nodes.Add("Aisles");
}
}
当我使用设计器将控件添加到表单并运行代码时,我得到以下结果:
TreeNodes是重复的,因为除了已经在类的构造函数中生成的节点之外,设计器还会生成添加它们的代码。 我可以轻松删除设计器文件中生成的代码,但它远非理想,因为每次更改TreeView子类时我都需要更改生成的代码。
如果没有遇到这个问题,应该如何实现TreeView子类?考虑我将向此子类添加事件和其他属性。
答案 0 :(得分:0)
您需要覆盖或隐藏Nodes
属性并添加[DesignerSerializationVisiblity(DesignerSerializationVisiblity.Hidden)]
。
这将告诉设计师停止序列化属性。
请注意,您必须重新打开并重新保存(重新编译后)使用您的控件的每个设计器才能实际更新.Designer.cs
文件。