我想在他/她想要编辑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处理箭头键事件,但我想同时执行这两项操作。)
尝试使用按键也无济于事。
答案 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;
}
}