【问题标题】:Disable label edit in a MouseClick action在 MouseClick 操作中禁用标签编辑
【发布时间】:2011-09-04 21:36:17
【问题描述】:

在 WinForms 控件中,如何在单击 ListView、TreeView 等控件项时禁用标签编辑,而不禁用编辑功能(LabelEdit 属性)?

我想这样做是因为以下行为令人讨厌且有问题:“选择其中一个控件的项目,将焦点更改为其他应用程序,然后单击该项目”,然后标签编辑会自动开始。也许我只想恢复焦点和选择。

当您在同一应用程序的控件之间更改焦点时会发生类似的情况,但在这种情况下,我会在进入控件时停止清理项目选择的这种行为。

对于第一个描述的无用的问题。

【问题讨论】:

  • 为什么要禁用它而不禁用它?关闭LabelEdit 属性正是您正在寻找的解决方案。您仍然可以通过代码编辑标签,用户只是无法通过单击它来完成。
  • XD @Cody 你在写完问题并转到视觉之后,我想到了解决方案,我默认禁用labeledit,然后如果我按F2我启用它然后调用BeginEdit( ) 方法。在 AfterLabelEdit 事件处理程序中,我再次禁用它。
  • 这有副作用,当您执行此操作时会重新创建本机 Windows 控件。您在这个问题中留下了一些非常重要的细节,让 SO 用户几乎没有机会帮助您。何不干脆放弃标签编辑,反正对用户来说就是个皮塔饼。只需在 TextBox 中显示所选节点的文本。

标签: .net winforms listview controls treeview


【解决方案1】:

您可以通过处理树的 BeforeLabelEdit 来做到这一点

    private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
    {
//if you want to edit in some special case write your condition here
        e.CancelEdit = true;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-02
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多