我想问一个关于在 winForm 中的 TextBox 中,虽然我把TextBox 的只读属性变为 True , 但是还可以复制粘贴的操作。怎么能让这个TextBox 里面的 文本不能被复制出来?

解决方案 »

  1.   

    屏蔽Ctrl+C操作,并把contextmenu去绑定一个空的contextmenu来替换。
      

  2.   

    参看
    http://www.syncfusion.com/faq/windowsforms/search/961.aspx把其中的ctrl+V改成ctrl+c即可
      

  3.   

    在TexBox的TextBox1_KeyDown动作下屏蔽CTR+C,就可,
    if(e.control&&e.KeyCode.Equals(Keys.C)){
    e.Handled=true;
    }
      

  4.   

    最简单的方法: 把 TextBox 改为 Label 即可.
      

  5.   

    我上面的能屏蔽CTR+C的快捷键,但是鼠标右键的不能屏蔽了,如果真希望Text里的内容不被复制,可以用RichTextBox
      

  6.   

    你可以在form中重载ProcessCmdKey方法。
    具体代码如下:protected override bool ProcessCmdKey(ref Message msg,Keys keyData)  

     if(keyData == (Keys.Control | Keys.C)||keyData ==(Keys.Control | Keys.V))
     {
      MessageBox.Show("不能粘贴,复制");
      return true;
     }
     else 
     return base.ProcessCmdKey(ref msg, keyData); 
    }但是这个不能很好的解决问题。
    因为他是重载自Form的,也就是说Form中的所有KeyDown都会先经过它的处理。
    那么你在Form里面在加入其他任何控件都将不能粘贴。另外点击右键也不能阻止contexmenu的弹出。最好的做法还自定义一个Mytextbox 继承自textbox,然后在Mytextbox中进行重载和替换。基本上做Form的,不管是webForm还是WinForm都应该有一套自定义控件吧虽然我没有:)
      

  7.   

    你把他的enable属性设置为false不可以吗?既然不让用了,enable=false也就无所谓了吧。
      

  8.   

    楼主还是该Enable吧。既然可以用ReadOnly =true,看来你也不需要输入和更改TextBox中的内容。
      

  9.   

    bearocean(helloworld) 
    方法可行