我正在尝试从TreeNode继承以向TreeView添加自己的节点:
class TreeViewItem : TreeNode
{
public new string Text;
public override string ToString()
{
return "asd";
}
}
我试过了:
TreeViewItem tvi = new TreeViewItem();
tvi.Text = "asd";
trv_bd_content.Nodes.Add(tvi);
但仍然将空节点添加到TreeView(没有Text“asd”的节点) 我该怎么办?
答案 0 :(得分:2)
据我了解,您将覆盖TreeNode
只是为了显示一些您自己构建的文本。
如果在将节点添加到树之前已知计算所需的值,我建议这样做:
treeView = new TreeView();
var node = new TreeNode(
string.Format("{0}: {1} / {2} / {3}", name, latitude, longitude, H));
treeView.Nodes.Add(node);
覆盖可视元素只是为了保留其他数据并不是一个好主意。 Usisally你覆盖visual元素来修改它的绘图或与它的行为相关的东西作为视觉元素。
为了保存相应的数据,您可以使用Tag
属性来保存任何数据(无类型)。因此,您可以放置包含数据的类的实例。
node.Tag = "AnyData";
答案 1 :(得分:1)
在我看来,treenode不使用ToString()来获取显示信息。它使用.Text属性(它似乎不喜欢被覆盖)
如果您愿意,可以在构造函数中设置Text属性。
class TreeViewItem : TreeNode
{
// public new string Text; Remove this so you don't call it
public TreeViewItem(){
this.Text = "asd";
}
//Treeview doesn't seem to use this
public override string ToString()
{
return "asd";
}
}