2011-11-21 43 views
0

我有一個TreeView和一個多行文本框。當用戶點擊樹形視圖中的一個節點時,它的Text屬性將被添加到文本框中。按鍵改變布爾?最佳做法是什麼?

默認情況下,一個節點被點擊(或按下回車鍵時,TreeView控件具有焦點,諸如此類的東西......)每次,文本框將被清除,所選擇的節點的新Text將被添加。

但我正在尋找一種方式,即當用戶持有修改鍵(ctrl或shift ...)時,文本框將不會被清除,並且新選定的節點文本將被添加到文本框中而不會清除任何內容。

我在想有一個布爾值,每當按下修飾鍵時,它就會變成假,當鍵被釋放時它會變回真。

public bool ClearBox = true; 

後來:

private void AddText(string text) 
{ 
    if(ClearBox == true) //by default it is true 
    { 
     textBox.Clear(); 
     textBox.Text = text; 
    } 
    else //user is holding a modifier key so the ClearBox is false now 
    { 
     textBox += Environment.NewLine + text; 
    } 
} 

節點選擇事件:

private void treeView_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    //How to check here if a modifire key is being pressed (holded) ? 
    this.AddText(treeView.SelectedNode.Text); 
} 
+0

問題是我怎麼能知道用戶持有修飾鍵,所以文本框不會自我刷新。 –

回答

1

你可以問物業修改鍵被按下了表單的ModifierKeys。在你的代碼中,你需要這樣做:

private void treeView_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    if (ModifierKeys == Keys.ShiftKey) 
    { 
     this.AddText(treeView.SelectedNode.Text); 
    } 
} 
+0

謝謝,這解決了我的問題。我可以用同樣的方法將'ClearBox'切換爲true/false嗎?我的意思是,如果這是可靠的方式來做到這一點? –

+1

你可以詢問這個屬性的修飾鍵(Alt,Ctrl和Shift),而不是別的。您可以切換該屬性,但在用戶按下修改鍵時沒有引發事件。如果對你有幫助,不要忘記接受答案。 :-) – Fischermaen

相關問題