c# - 如何在 Windows 窗体 TreeView 中按标记选择节点

标签 c# winforms treeview

我正在尝试按标签选择节点。我已尽我所能进行搜索,但仍然没有运气。我用它来为我的 treeview

中的每个节点分配一个标签
 foreach (DataRow dataRow in databaseFunc.dataTable.Rows)
 {
      TreeNode nodes = new TreeNode();
      nodes.Text = dataRow["LastName"].ToString().Trim() + ", " +
            dataRow["FirstName"].ToString().Trim();
      nodes.Tag = dataRow[0].ToString().Trim();
      treeView.Nodes.Add(nodes);
 }

我知道您可以使用以下方式选择节点:

 TreeNodeCollection nodeCollect = treeView.Nodes;
 treeView.SelectedNode = nodeCollect[index];

最佳答案

按标签查找

Tag包含复杂对象或者您想根据非字符串键查找时,通过Tag查找特别有用。

为了能够搜索子节点,您可以查看 answer here并使用后代扩展方法来查找包括子节点在内的所有节点。然后就可以通过Tag找到该节点。例如,如果 Tag 包含 Product,并且您想根据其 Id 查找该产品,则可以使用以下代码:

var result = tree.Descendants().Where(x=>((x.Tag as Product) != null) &&
                                     (x.Tag as Product).Id = someId).FirstOrDefault();

或者对于简单的字符串搜索键:

var result = tree.Descendants().Where(x=>(x.Tag as string) == searchkey).FirstOrDefault();
if(result!=null)
    tree.SelectedNode = result;

如果您只想在根节点之间搜索,请使用:

var result = tree.Nodes.Cast<TreeNode>().Where(... the rest is like above.

按名称查找

您可以使用Find Nodes 集合的方法,根据其 Name 查找节点(不是文本)。当您想要根据字符串键查找节点时,使用 Find 方法非常有用。为此,您应该在创建节点时设置节点的名称

var result = tree.Nodes.Find(searchKey , true).FirstOrDefault();
if(result !=null)
    tree.SelectedNode = result;

如果您只想在根节点之间搜索,请使用:

var result = tree.Nodes.Find(searchKey , false).FirstOrDefault();

注意

总而言之,您可以使用 Tag 属性将复杂对象存储在 Tag 中,并在需要时将其取消装箱。对于字符串搜索键,最好使用 Name 属性,如 comments 中所述。 .

关于c# - 如何在 Windows 窗体 TreeView 中按标记选择节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228617/

相关文章:

c# - 启动与文件关联的外部进程并将此应用程序发送到后台

c# - 如何在 C# 中正确使用 OpenID Connect jwks_uri 元数据?

c# - 在 C# WebBrowser 控件中触发 JavaScript

c# - 日历 System.Globalization.GregorianCalendar 不支持字符串表示的 DateTime

c# - 单击鼠标按钮如何在 WinForms 事件中结束?

c# - 如何在 ItemsSource = 自定义对象集合时选择/展开 TreeView 节点?

c# - 如何使用 C# 滚动到 WinForms TextBox 中的指定行?

c# - 无法对 System.Int32 和 System.String 执行 'Like' 操作。 DataGridView 搜索和过滤

java - 右键单击 TreeView 的项目时显示菜单

C# 右键单击​​ TreeView 节点