我现在一个TextBox里面有很多文字,我鼠标先左键选择一部分,然后鼠标右键。不想让他弹出什么”复制 剪切“的提示框 弹出个自定义的提示来 比如:设为标题,设为主题等类似的提示。我改怎么做 谢谢

解决方案 »

  1.   

    定义一个菜单,并设置TextBox.ContextMenu为这个菜单!
      

  2.   

    物理懿 TextBox:
    public class TextBoxEx:System.Windows.Forms.TextBox
    {
    private const int WM_COPY=0x0301;
    private const int WM_CONTEXTMENU =0x007B;
    public TextBoxEx()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    protected override void WndProc(ref Message m)
    {
    base.WndProc (ref m);
    if(m.Msg==WM_CONTEXTMENU||m.Msg==WM_COPY)return;//WM_CONTEXTMENU是为了不让出现鼠标右键菜单,WM_COPY不允许CTRL+C复制内容
    if(m.Msg==WM_PASTE)return;
    }
      

  3.   

    如果你想让出现CONTEXTMENU而让复制变灰不起作用那就屏蔽消息WM_COPY好了,如果你想写一个象QQ一样无法盗取密码的文本框,那你就再屏蔽WM_GETTEX,WM_RBUTTONDOWN,WM_PASTE,然后重写OnKeyDown和OnKeyPress,
    由于要处理UNDO,REDO,所以写起来有点烦,得加一个字段oldValue,又要根据文本框的属性Multiline在OnKeyPress分别处理,同时处理BackSpace,Delete键,我以前化了好长时间才完成,只在自己的安装程序中(防盗密码)用了一次,如果没必要就不用那么麻烦了
      

  4.   

    1、添加一个contextMenu控件,名为contextMenu1;
    2、contextMenu1中添加自己要显示的菜单;
    3、把TextBox的contextMenu 属性设为:contextMenu1;OK