0

我对树视图以及节点索引的工作方式有一点问题。在我的程序中,我有一个可以包含任意数量用户的数据库。每个用户由回车分隔(即每行一个用户)。我正在创建一个列出数据库中所有用户的树视图对象。如果用户单击特定节点,我如何引用该节点/处理它被选中,因为我正在从数据库中动态创建节点?

StreamReader getMembers = new StreamReader(@"[data]\db\users.db");
        List<string> mems = new List<string>();
        members.Nodes.Add("Members");
        while (!getMembers.EndOfStream)
        {
            mems.Add(getMembers.ReadLine());
        }
        foreach (string o in mems)
        {
            TreeNode n = new TreeNode(o);
            members.Nodes[0].Nodes.Add(n);
        }

数据库和程序:

在此处输入图像描述

4

2 回答 2

1

如果您试图获取被选中的树节点,您可以通过TreeView.SelectedNode属性来实现...(http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.selectednode.aspx )

如果您想在选定的树节点上处理事件,请注册该TreeView.AfterSelect事件 (http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.afterselect)

例子:

private void TreeView1_AfterSelect(System.Object sender, 
    System.Windows.Forms.TreeViewEventArgs e)
{

    // Vary the response depending on which TreeViewAction
    // triggered the event. 
    switch((e.Action))
    {
        case TreeViewAction.ByKeyboard:
            MessageBox.Show("You like the keyboard!");
            break;
        case TreeViewAction.ByMouse:
            MessageBox.Show("You like the mouse!");
            break;
    }
}
于 2012-06-11T06:04:48.600 回答
0

假设您使用的是标准表单树视图,听起来您想订阅TreeView.AfterSelect上的事件。

// Handle the After_Select event.
private void TreeView1_AfterSelect(System.Object sender, 
    System.Windows.Forms.TreeViewEventArgs e)
{
  // If (TreeView1.SelectedNode...
}
于 2012-06-11T06:05:44.217 回答