Проблема управления вводом в treeViewNode LabelEdit - PullRequest
1 голос
/ 19 сентября 2011

Я пытаюсь контролировать ввод пользователя, когда он / она хочет отредактировать treeNode.Я не хочу, чтобы он мог писать числа (или даже лучше не писать число с указанным индексом текста, но это бонус)

Что я сделал, так это сделал логическое значение в главном окне, которое определяет,пользователь редактирует treeNode или нет:

void Tree_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) {

       isEditing = false;
}



void Tree_BeforeLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) {
      isEditing = true;
}

private void Tree_KeyDown(object sender, KeyEventArgs e) {

      control input. (e.Handled = true when keyDown is a number.)

}

Это то, что я пытался, но событие keydown вызывается только тогда, когда я НЕ редактирую триод.Так что это выходит за рамки цели.(Я уже использую keydown для обработки событий клавиш со стрелками, но я хочу сделать и то, и другое.)

Попытка нажатия клавиши также не принесла пользы.

1 Ответ

0 голосов
/ 19 сентября 2011

TreeView не имеет никакого механизма для управления частью LabelEdit.Даже если вы можете обработать часть KeyDown метки для предотвращения чисел, вам все равно придется проверять содержимое AfterLabelEdit, поскольку пользователь также может «вставлять» числа в поле.Лучше всего управлять им во время события AfterLabelEdit:

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
  foreach (char c in e.Label)
  {
    if (char.IsNumber(c))
      e.CancelEdit = true;
  }
}
...