2012-09-19 43 views
0

我有一個樹形視圖有幾個孩子,他們中的很多人都有祖先。 我也有一個treeview旁邊的datagridview。基於treeview選定的節點,我綁定Datagridview中的數據。Treeview.selectednode給出錯誤的值

我用treeView1.SelectedNode得到節點的值 我的問題是這個表達式給出了以前選擇的節點。

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    node = e.node; 
} 

這給了我正確的節點(選定節點)。 但是

node = treeview1.selectednode給出我之前選擇的節點。 我想在點擊事件(_nodemouseclick)之外獲得選定的節點。

我怎樣才能得到它。 我不想將節點保存在全局變量中,然後使用它。

希望我很清楚地解釋我的問題。

感謝您的期待。

+0

改爲使用AfterSelect事件。 –

+0

獲得正確的節點後,將其保存在全局變量中沒有問題。看到我的回答 – Sami

回答

1
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); 
    } 

其他功能意味着您可以使用此tree_node任何地方使用上述兩種方法。

+0

私有沒有必要寫,這是默認的保護級別。 – Sami

1

這是因爲在更改selectedNode之前引發MouseClick事件。嘗試使用SelectedItemChanged事件,而不是

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

    }