нажмите клавишу, чтобы изменить Bool? какова лучшая практика? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть TreeView и многострочный TextBox.Когда пользователь щелкает узел в древовидной структуре, его свойство Text будет добавлено в TextBox.

По умолчанию каждый раз, когда щелкают по узлу (или нажимают клавишу ввода, когда древовидное представление имеет фокус и тому подобное)...), TextBox будет очищен и будет добавлен новый 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);
}

1 Ответ

1 голос
/ 21 ноября 2011

Вы можете задать свойству ModifierKeys формы, какая клавиша-модификатор нажата.В вашем коде вы должны сделать так:

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