在treeView1节点中选择事件为什么我在属性Tag上得到null?

时间:2014-07-29 17:12:01

标签: c# .net winforms

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    try
    {
        txtName.Text = "";
        txtParentName.Text = "";
        txtText.Text = "";
        txtTag.Text = "";

        txtName.Text = treeView1.SelectedNode.Name.ToString();
        txtText.Text = treeView1.SelectedNode.Text.ToString();
        txtTag.Text = treeView1.SelectedNode.Tag.ToString();
        txtParentName.Text = treeView1.SelectedNode.Parent.Text.ToString();
    }
    catch { }
}

null在线:

txtTag.Text = treeView1.SelectedNode.Tag.ToString();

标记为空

  

发现System.NullReferenceException HResult = -2147467261
  Message =对象引用未设置为对象的实例   Source = ScrollLabel StackTrace:          at ScrollLabelTest.DisplayResponses.treeView1_AfterSelect(Object sender,   DisplayResponses.cs中的TreeViewEventArgs e):第58行InnerException:

第58行是:

txtTag.Text = treeView1.SelectedNode.Tag.ToString();

某些节点没有标签是否正常?我是否需要先向节点添加标签?

我从这里拿了例子:

TreeView

但是他使用form2来提供一个新的节点名称标签文本......我不想现在为每个节点和子节点分配所有这些属性。

我现在明白我应该给出节点名称文本,父名称文本,标签文本。但我有70个节点,在每个节点我扩展,每个节点有50-70个节点。我怎样才能给他们所有的姓名标签和父母姓名?给出这个名字/文字的最佳逻辑是什么?

1 个答案:

答案 0 :(得分:1)

如果您没有设置它们,C#中的对象具有默认值(在本例中为null)是完全正常的。

所以是的,如果你没有明确地将Tag设置为某个东西,那么它将为null。你将不得不处理它。也许使用if语句,在调用方法之前检查该值。