make richtextbox不响应鼠标事件

时间:2016-03-22 05:52:36

标签: c# winforms richtextbox

我正在开发一个应用程序,并且在其中一个表单中我放置了一个富文本框,其中包含一些用户将要键入的文本,我已将richtextbox的ReadOnly属性设置为true,表单的keypreview为是的,我已经处理了表单按键事件,将蓝色应用于正确的按键,并将红色应用于富文本框中当前字符的错误按键。现在我需要限制用户只键入文本,他们不应该使用鼠标caz选择richtextbox文本,因为他们可能会弄乱我的应用程序。

提前预订

1 个答案:

答案 0 :(得分:1)

您需要继承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以禁用编辑。