Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中的treeview中显示选定节点的显示值?_C#_Sql_Treeview - Fatal编程技术网

C# 如何在C中的treeview中显示选定节点的显示值?

C# 如何在C中的treeview中显示选定节点的显示值?,c#,sql,treeview,C#,Sql,Treeview,我正在尝试创建一个树视图,它从sql数据库中提取信息。我希望文本是名称字段,但当您双击名称时,我希望它显示id字段。我已经找了又找,但是找不到关于这个的任何信息 尝试从OP的评论中添加代码: foreach (DataRow dr in Db.Table("Employee").Rows) { treeView1.Nodes.Add( new TreeNode(dr["Name"].ToString(), new T

我正在尝试创建一个树视图,它从sql数据库中提取信息。我希望文本是名称字段,但当您双击名称时,我希望它显示id字段。我已经找了又找,但是找不到关于这个的任何信息

尝试从OP的评论中添加代码:

   foreach (DataRow dr in Db.Table("Employee").Rows) 
   { 
      treeView1.Nodes.Add(
             new TreeNode(dr["Name"].ToString(),
             new TreeNode[] {new TreeNode(dr["EEID"].ToString())}));
   } 
      var node = treeView1.SelectedNode.Nodes[0].Text; 
      MessageBox.Show(string.Format("You selected: {0}", node));

您可以使用鼠标单击事件。当您单击某个特定节点时,假设它不是WPF原因,则可以从SelectedNode属性获取其文本

 private void btnGetNodeValue_Click(object sender, EventArgs e)
        {
            string nodeVal=  treeView1.SelectedNode.Text;

        }

然后,您可以将这个字符串值传递给数据库以检索您的值,将Select语句和WHERE子句混合在一起,以便轻松地获取它

为TreeView创建新节点时,可以指定文本值和键值,如下所示:

TreeView tv = new TreeView();
tv.Nodes.Add(key, text); //where key is your database id value, and text the display 
然后,您只需返回单击的节点的键。这是你想要的吗

编辑:这是你凭记忆说话时发生的事情。。。这是错误的。”“key”与ID不同,不是隐藏的键值,“key”是树节点的名称。请稍等,我给你一个合适的解决方案

**EDIT2**:您还可以使用Name属性。像这样:

tView.Nodes.Add("Id_0001", "Mr. Dexter");
然后,您可以使用如下内容检索该节点的值:

    private void tvView_AfterSelect(object sender, TreeViewEventArgs e)
    {
        TreeNode node = e.Node;
        MessageBox.Show(node.Name + "\n" + node.Text);
    }

这将产生结果:Id_0001和Dexter先生

在Db.TableEmployee.Rows{treeView1.Nodes.Addnew TreeNodedr[Name].ToString,new TreeNode[]{new TreeNodedr[EEID].ToString};}var node=treeView1.SelectedNode.Nodes[0].Text;您选择的MessageBox.Showstring.Format:{0},节点;抱歉搞得一团糟,但我在这里复制粘贴代码时出错了…我想这并不像用户友好。没关系,我把它添加到了问题中。这很好。。。哈哈,谢谢。只是提醒一下:一般来说,你不想把问题的答案编辑成问题。如果你自己发现了,就按照你所做的去做:给出下面的答案并接受它。我认为这很接近,但我不知道如何调用ID.var node=treeView1.SelectedNode;如果可能的话,我想要这样的东西:var node=treeView1.DisplayValue;或者别的什么。我希望你能帮助我…:否,如果执行var node=treeView1。SelectedNode节点将作为TreeViewNode对象实例化。因此,可以打印其显示值和键隐藏值。抱歉,无法向您提供确切的措辞,我在这台机器上没有VS,而且我的内存没有Intellisense…是的,但我想双击名称并显示ID或diff值,而不是选择的名称Node.text。如果可能的话,我正在寻找类似selectedvalue.text的内容。这是我的答案。谢谢你的帮助。正是这个臭名昭著的标签让我举步维艰……我不知道为什么他们不给它一个像列表框那样的显示值属性,但是它很管用。
foreach (DataRow dr in Db.Table("Employee").Rows)
{ 
  TreeNode tn = new TreeNode(); 
  tn.Tag = dr["eeid"]; 
  tn.Text = dr["Name"].ToString(); 
  treeView1.Nodes.Add(tn); 
} 
private void treeView1_DoubleClick(object sender, EventArgs e) 
{ 
  MessageBox.Show(treeView1.SelectedNode.Tag.ToString()); 
}