C# 避免在树状视图中按键时选择新节点

C# 避免在树状视图中按键时选择新节点,c#,winforms,C#,Winforms,当TreeView(WinForms)具有焦点时,按键选择文本以键字符开头的节点 有没有办法避免这种情况 我想到的第一件事是创建继承自TreeView的控件,并重写IsInputKey,以便在所有不需要的情况下返回false 但它不起作用。有什么方法可以替代这种行为吗?我想我找到了一种可能的解决方法(虽然不优雅也不理想) 所以,我检查KeyDown事件,如果它发生,我将在一个变量中记录所选节点 之后,在AfterSelect事件中,我实际上再次选择了该节点 如果有人有更优雅的解决方案,那将是受欢

当TreeView(WinForms)具有焦点时,按键选择文本以键字符开头的节点

有没有办法避免这种情况

我想到的第一件事是创建继承自TreeView的控件,并重写IsInputKey,以便在所有不需要的情况下返回false


但它不起作用。有什么方法可以替代这种行为吗?

我想我找到了一种可能的解决方法(虽然不优雅也不理想)

所以,我检查KeyDown事件,如果它发生,我将在一个变量中记录所选节点

之后,在AfterSelect事件中,我实际上再次选择了该节点


如果有人有更优雅的解决方案,那将是受欢迎的。

我想我找到了一个可行的解决方案(虽然不优雅也不理想)

所以,我检查KeyDown事件,如果它发生,我将在一个变量中记录所选节点

之后,在AfterSelect事件中,我实际上再次选择了该节点


如果有人有更优雅的解决方案,这将是受欢迎的。

对于TreeView(而不是表单)实现的按键和按键事件

e.Handled=false


将阻止节点的选择。此外,只有当TreeView已经聚焦时,才会触发这些事件。并且它不会阻止空格键。

对于TreeView(而不是表单)的KeyPress和KeyDown事件

e.Handled=false


将阻止节点的选择。此外,只有当TreeView已经聚焦时,才会触发这些事件。并且它不会阻止空格键。

设置
e.Handled=truekeyup
keypress
事件中的code>。

设置
e.Handled=true
在两个
keyup
keypress
事件中。

我还发现在keypdown事件中将e.superskeypress设置为true对我的应用程序来说不是一个好的解决方案。我还发现在keypdown事件中将e.superskeypress设置为true对我的应用程序来说不是一个好的解决方案。