按键改变布尔?什么是最佳做法?

时间:2011-11-21 15:23:13

标签: c# events delegates keyboard keypress

我有一个TreeView和一个多行TextBox。当用户单击树视图中的节点时,它的Text属性将添加到TextBox中。

默认情况下,每次单击一个节点(或者当treeview具有焦点和那种东西时点击输入......),TextBox将被清除,并且将添加所选节点的新Text

但我正在寻找一种方法,当用户持有修改键(ctrl或shift ...)时,文本框将不会被清除,新选择的节点的文本将被添加到文本框中而不会清除任何内容。

我正在考虑使用布尔值,每当按下修饰键时,它都会变为false,当键被释放时,它会返回true。

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

1 个答案:

答案 0 :(得分:1)

您可以询问表单中属性ModifierKeys按哪个修饰键。在您的代码中,您必须这样做:

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