如何在c#中从treeview获取当前所选节点的索引

时间:2016-11-17 14:10:54

标签: c# treeview

我正在使用c#中的表单应用程序,其中包含TreeView。我想要做的是将面板连接到每个节点,以便每当用户点击某个节点时,面板将根据所选节点进行更新。
我面临的问题是,当我选择一个节点时,应用程序什么都不做,但是当我选择另一个节点时,应用程序会显示与先前选择的节点相关的内容。表示App始终获取与上次选择的节点相关的内容而不是当前节点。例如,如果我选择" Text"节点,标签将不显示任何内容,之后如果我选择其他节点,如"外观"标签将显示" Text"这是最后选择的节点。

以下是我的Form包含TreeView的图像 Form Cotaining TreeView 出于测试目的,我只是将所选节点的值存储在我的标签文本中 这是代码。

public partial class TextEditor_Preferences : Form
{
    public TextEditor_Preferences()
    {
        InitializeComponent();

    }
    List<Panel> myPanels = new List<Panel>(); //Ignore this line of code !

    private void SideBar_MouseClick(object sender, MouseEventArgs e)
    {
        label1.Text = SideBar.SelectedNode.ToString();
    }
}

有人可以建议我使用方法吗? 如果我遗漏了某些内容或问题无效,请明确告诉我。感谢

2 个答案:

答案 0 :(得分:3)

TreeView控件具有AfterSelect事件,您应该在该处理程序中编写代码。

public YourForm()
{
    InitializeComponent();
    treeView.AfterSelect += TreeViewAfterSelect;
}

private void TreeViewAfterSelect(object sender, TreeViewEventArgs e)
{
    string nodeText = treeView.SelectedNode.Text;

    // Update the panel here accordingly
}

答案 1 :(得分:1)

也许尝试使用AfterSelect事件而不是MouseClick。 e.g。

private void Sidebar_AfterSelect(object sender, TreeViewEventArgs e)
{
    label1.Text = e.Node.Text;
}