我现在想在richtextbox中用鼠标点击时,失去光标,双击也不能选择内容。
因为只设置 readonly属性false的话,光标还是能在控件中点击,也能全选。

解决方案 »

  1.   

    做个隐藏控件比如一个TextBox tbHide;
    //RichTextBox Enter 事件中
    tbHide.Focus();
      

  2.   

    可以这样,控制只能选0个字符:
    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
      richTextBox1.Select(richTextBox1.SelectionStart, 0);
    }
      

  3.   

    屏蔽RichTextBox的消息:可以将下面的代码加到你窗体Form1的后面,然后修改Designe文件,让
    this.richTextBox1 = new PoorBox();    public class PoorBox : RichTextBox
        {
            const int DBCLCIK = 0x0203;//双击
            const int GETFOCUS = 0x0007;//得到焦点
            protected override void WndProc(ref Message msg)
            {
                if (msg.Msg == DBCLCIK || msg.Msg == GETFOCUS)
                {
                    return;
                }
                base.WndProc(ref msg);
            } 
        }
      

  4.   

    在鼠标事件里设置:e.Handled=true;
    或enable=false
    或重写WndProc方法,捕获信息。
      

  5.   

    我是想在richtextbox中鼠标一点击后,光标就消失,这样也就不会就选中文本了。
      

  6.   

    这样试试,不过你一旦输入字符,光标又有了
    [DllImport("user32", EntryPoint = "HideCaret")]
            private static extern bool HideCaret(IntPtr hWnd);
    private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
            {
                HideCaret(((RichTextBox)sender).Handle);
            }
     
      

  7.   

    防止复制的话你可以复写ctrl+c和鼠标copy事件使他们无效化,最彻底的方法是干脆不要用richbox,用picturebox,图片显示点阵字
      

  8.   

    请问不知如何针对特定的richtextbox进行控制?
      

  9.   

    重写RichTextBox类,禁止复制。public class NewTextBox : RichTextBox
    {
        protected override void WndProc(ref Message msg)
        {
           if (msg.Msg == 0x0300 || msg.Msg == 0x0301) return; // 禁止复制或剪切
            base.WndProc(ref msg);
        }
    }