2016-11-17 46 views
0

我工作在C#中的表單應用程序,包括在它的TreeView索引。我想要做的是將面板連接到每個節點,因此無論何時用戶單擊節點,面板都將根據所選節點進行更新。
我面臨的問題是,當我選擇一個節點,該應用什麼也不做,但是當我選擇另一個節點,那麼應用程序顯示與先前選擇的節點的內容。意味着應用程序始終獲取與上一個選定節點相關的內容,而不是當前節點。例如,如果我選擇「文本」節點,標籤將不顯示任何內容,之後如果我選擇其他節點,如「外觀」,則標籤將顯示最後選擇的節點「文本」。如何從樹視圖當前選擇的節點在C#

這裏以下是我的形式,它包含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

MouseClick事件可能發生在樹中的選擇被更改之前,因此它在點擊時仍然具有標記爲「已選」的舊值。嘗試註冊到另一個事件,也許是SelectionChanged或類似的東西。 –

回答

1

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 
} 
+0

非常感謝你:) –

1

也許嘗試使用AfterSelect事件,而不是鼠標點擊。例如

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

謝謝。這也適用,但我更喜歡上面那個。 :) –

相關問題