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