【问题标题】:C# Why is SelectedNode.Tag null?C# 为什么 SelectedNode.Tag 为空?
【发布时间】:2012-06-04 04:43:54
【问题描述】:

我在我的 C# 项目(Windows 窗体)中使用 TreeView,但我遇到了一个问题(显然:P)。我像这样填充我的 TreeView:

void RefreshTreeView()
{
    treeView1.Nodes.Clear();
    for (int i = 0 ; i < categories.Count ; ++i)
    {
        treeView1.Nodes.Add(categories[i].name);
        for (int j = 0 ; j < categories[i].questions.Count ; ++j)
        {
            treeView1.Nodes[i].Nodes.Add("Pytanie nr " + categories[i].questions[j].number.ToString()
                + " za " + categories[i].questions[j].points.ToString() + " pkt. ["
                + (categories[i].questions[j].used ? "Przeczytane" : "Nieprzeczytane") + "]");
            treeView1.Nodes[i].Tag = categories[i].questions[j];   // A
        }
    }
}

在上面标记为“A”的行中,我将一个 Question 对象附加到 Node 的标签。而且它似乎在程序中稍后会起作用,我可以像这样检索我的 Question 对象:

((Question)treeView1.Nodes[0].Tag).number

但我想获取当前选择的节点标签。我尝试这样做: ((Question)treeView1.SelectedNode.Tag).number 但它不起作用(标签为空)。我究竟做错了什么?以及如何获取当前选中的Node的Tag?

【问题讨论】:

  • 我认为它返回 null 因为它是 null。您的程序中还有其他内容将其设置为 null 或未能将其设置为预期值。或者您正在访问与您打算访问的对象不同的对象。简而言之,SelectedNode 返回一个 TreeNode 对象,就像 Nodes[x] 返回一样。

标签: c# null treeview selecteditem


【解决方案1】:

treeView1.Nodes[i].Tag 是父节点的标签。

您可能想设置子节点的标签,即treeView1.Nodes[i].Node[j].Tag

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2015-06-30
    • 2016-07-11
    • 2012-12-17
    • 2013-09-21
    相关资源
    最近更新 更多