【问题标题】:Avoid selecting new node on key press in TreeView避免在 TreeView 中按键时选择新节点
【发布时间】:2023-03-21 22:26:01
【问题描述】:

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

有没有办法避免这种情况?

我想到的第一件事是创建从 TreeView 继承的 Control,并覆盖 IsInputKey,以便在所有不希望的情况下返回 false。

但它不起作用。有没有办法覆盖这种行为?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    keyupkeypress 事件中设置e.Handled = true;

    【讨论】:

      【解决方案2】:

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

      e.Handled = false;

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        • 我还发现在 KeyDown 事件上将 e.SupressKeyPress 设置为 true,但这对我的应用程序来说不是一个好的解决方案。
        猜你喜欢
        • 1970-01-01
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        相关资源
        最近更新 更多