【问题标题】:Treeview Node Text and specified key are matching strings but don't 'match'Treeview 节点文本和指定的键是匹配的字符串,但不“匹配”
【发布时间】:2016-10-31 12:36:06
【问题描述】:

我正在尝试将子节点添加到树视图中的父节点。我通过节点文本的特定键 loanresult.LoanName 查找贷款名称。两者都显示为“TestOne”,但是没有将子节点添加到父树节点。

Matches 然后由于找不到匹配项而引发错误matches[0].Nodes = 'matches[0].Nodes' threw an exception of type 'System.IndexOutOfRangeException'

foreach (string st in activityList)
{
    var activityResult = JsonConvert.DeserializeObject<Activity>(st);
    if (loanResult.LoanName == activityResult.ParentLoanName)
    {
        TreeNode[] matches = tvTodoList.Nodes.Find(loanResult.LoanName, false);
        if (matches.Length > 0) matches[0].Nodes.Add(activityResult.ActivityName);
    }
}

文字

我一定遗漏了一些明显的东西吗?

【问题讨论】:

  • 您应该将密钥分配给Name 属性。 Text 属性用于显示文本,Name 将用作键,因此您可以通过其键找到节点。同样在查找时,如果您想在包括后代在内的所有节点中查找,请将true 作为第二个参数传递:var node = treeView1.Nodes.Find("some key", true).FirstOrDefault(); 然后检查if(node!=null) 然后做一些事情。请参阅this post 中的按名称查找示例。

标签: c# winforms treeview


【解决方案1】:

使用具有以下两个参数的重载代替使用单参数构造函数

//matches[0].Nodes.Add ("Your Key", "Node Text to display")
matches[0].Nodes.Add(loanResult.LoanName,activityResult.ActivityName);

由于您在添加新节点时未指定任何键,因此无法通过键搜索任何节点。

【讨论】:

  • 原来我没有给每个节点一个键和文本。我有tvTodoList.Nodes.Add(loanResult.LoanName);,它只是将文本分配给每个节点,名称为空字符串""。通过添加 tvTodoList.Nodes.Add(loanResult.LoanName, loanResult.LoanName); 给了我想要的结果。
猜你喜欢
  • 2021-02-10
  • 2015-08-29
  • 2014-05-03
  • 2015-10-30
  • 2022-01-01
  • 1970-01-01
  • 2014-10-08
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多