C# Treeview.selectednode提供了错误的值

C# Treeview.selectednode提供了错误的值,c#,winforms,treeview,C#,Winforms,Treeview,我有一个树视图,它有几个孩子,其中许多都有祖先。 我在树视图旁边还有一个datagridview。基于treeview选择的节点,我在Datagridview中绑定数据 我使用treeView1.SelectedNode获取节点值 我的问题是,这个表达式给出了以前选择的节点 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { node = e.node; } 这将为我

我有一个树视图,它有几个孩子,其中许多都有祖先。 我在树视图旁边还有一个datagridview。基于treeview选择的节点,我在Datagridview中绑定数据

我使用
treeView1.SelectedNode
获取节点值 我的问题是,这个表达式给出了以前选择的节点

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    node = e.node;
}
这将为我提供正确的节点(选定节点)。 但是

node=treeview1.selectednode
给出我先前选择的节点。 我想在单击事件(\u nodemouseclick)之外获取所选节点

我怎样才能得到它。 我不想在全局变量中保存节点,然后使用它

希望我能清楚地解释我的问题


非常感谢。这是因为在更改selectedNode之前引发了MouseClick事件。尝试改用SelectedItemChanged事件

    private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

    }
private void TreeView1\u SelectedItemChanged(对象发送方,RoutedPropertyChangedEventArgs e)
{
}

其他函数意味着您可以使用上述两种方法在任何地方使用此树节点。

Private不需要写入,它是默认的保护级别。请改用AfterSelect事件。在获得正确的节点后,将其保存在全局变量中没有问题。看到我的答案了吗
    TreeNode yourGlobalTreeNode;
    void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        yourGlobalTreeNode = e.Node;
        otherFunction();
        anOtherFunction(e.Node);
    }
    void otherFunction()
    {
        MessageBox.Show(yourGlobalTreeNode.Text);
    }
    void anOtherFunction(TreeNode tn)
    {
        MessageBox.Show(tn.Text);
    }