【问题标题】:How to make text in a WinForms TextBox unselectable without disabling it?如何在不禁用的情况下使 WinForms TextBox 中的文本不可选择?
【发布时间】:2009-01-04 15:28:02
【问题描述】:

是否可以在不禁用 TextBox 的情况下使 TextBox 中的文本无法选择? 这是一个 RichTextBox,我需要它的格式和选择功能。 我无法禁用它,因为我想处理 MouseMove 和 MouseDown 事件。

到目前为止,我一直在考虑禁用文本框并在其顶部放置一个面板,将其事件委托给文本框处理程序,但我无法使面板透明,因此它隐藏了文本框。

谢谢。

【问题讨论】:

  • 您让我感到困惑,因为您想要它的选择功能并且您希望它无法选择? “不可选择”是什么意思?
  • 如果这是阻止用户复制和粘贴内容的粗暴尝试,它不会起作用并且它会让很多用户讨厌你的应用程序。

标签: c# winforms textbox


【解决方案1】:

如何处理 .Enter 或 .GotFocus 事件以清除所做的任何选择?
您可以在Automatically select all text on focus in WinForms TextBox 中看到与您想要的相反的内容。

【讨论】:

  • 谢谢,我刚刚捕获了 enter 事件并将焦点设置到另一个控件。
  • 你知道那是不可取的!它在文档 [MSDN, Control Focus Events] 中明确指出,您不应从 Enter、GotFocus、Leave、LostFocus、Validating 或 Validated 事件处理程序中设置焦点。至少,我是这么读的!来源:msdn.microsoft.com/en-us/library/…
【解决方案2】:

如何处理这样的选择更改事件:

    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
        this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
    }

【讨论】:

    【解决方案3】:

    我不太确定你在做什么(想要一些不可选择的东西,但想要它的选择功能),但将 ReadOnly 设置为 true 是否能满足你的需求?

    【讨论】:

    • 我以编程方式选择特定单词,但我不希望用户能够选择任何内容。
    • 啊。现在有道理了。在这种情况下,请遵循 nahmiasdror 的建议。用户仍然可以在只读模式下影响选择。
    猜你喜欢
    • 2013-09-09
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2011-08-02
    • 2018-08-16
    • 2012-04-29
    相关资源
    最近更新 更多