在treeViewNode LabelEdit上控制输入的问题

时间:2011-09-19 08:47:54

标签: c# events treeview edit keypress

我想在他/她想要编辑treeNode时控制用户输入。我不希望他能够写出数字(或者更好的是不能在给定的文本索引处写一个数字,但这是奖金)

我所做的是在mainWindow上创建一个布尔值,用于确定用户是否正在编辑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仅在我不编辑treenode时被调用。所以它不属于目的。 (我已经使用keydown处理箭头键事件,但我想同时执行这两项操作。)

尝试使用按键也无济于事。

1 个答案:

答案 0 :(得分:0)

TreeView没有任何控制LabelEdit部分的机制。即使您可以处理Label的KeyDown部分以防止数字,您仍然需要检查AfterLabelEdit上的内容,因为用户也可以将数字“粘贴”到字段中。最好在AfterLabelEdit事件期间控制它:

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