让richtextbox不响应鼠标事件

make richtextbox not respond to mouse events

我正在开发一个应用程序,在其中一种形式中,我放置了一个 richtextbox,其中包含一些用户将要输入的文本,我已将 richtextbox 的 ReadOnly 属性 设置为 true,将 form 的 keypreview 设置为 true 和我已经处理了表单按键事件,将蓝色应用到正确的按键,将红色应用到错误的按键到 richtextbox 中的当前字符。现在我需要限制用户只能输入文本,他们不应该使用鼠标 caz select richtextbox 文本,那样他们会弄乱我的应用程序。

提前tnx

您需要继承 RichTextBox 并禁用鼠标事件处理。

public class DisabledRichTextBox : System.Windows.Forms.RichTextBox
{
    // See: http://wiki.winehq.org/List_Of_Windows_Messages

    private const int WM_SETFOCUS   = 0x07;
    private const int WM_ENABLE     = 0x0A;
    private const int WM_SETCURSOR  = 0x20;

    protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        if (!(m.Msg == WM_SETFOCUS || m.Msg == WM_ENABLE || m.Msg == WM_SETCURSOR))
            base.WndProc(ref m);
    }
}

它将像一个标签一样,阻止焦点、用户输入、光标更改,而不会被实际禁用。

您还需要保留 ReadOnly = true 以禁用编辑。