RT,谢谢

解决方案 »

  1.   

    重写个类
    public myTextBox : TextBox
    {
         protected overrides WndProc(ref Message m)
         {
                if(m.Msg == WM_MOUSEDOWN || m.Msg == WM_MOUSEUP)
                {}
                else
                {base.WndProc(ref m);}
         }
    }
      

  2.   

    最巧方法:
    添加一个contextMenu控件,命名为:contextMenu1
    然后把textbox的ContextMenu属性设为contextMenu1就可以了
      

  3.   

    嗯,看来windows的API编程还是王道啊.
      

  4.   

    添加一个contextMenu控件,命名为:contextMenu1 = new ContextMenu().
    然后把textbox的ContextMenu属性设为contextMenu1就可以了api好用,但是总是用api,那c#用来干什么?
      

  5.   

    public class myTextBox : System.Windows.Forms.TextBox
        {
            private const int WM_RBUTTONDOWN    = 0x204;
            private const int WM_RBUTTONUP      = 0x205;
            private const int WM_RBUTTONDBLCLK  = 0x206;        protected override void WndProc(ref Message m)
            {
                if (this.ContextMenuStrip == null)
                {
                    if (m.Msg == WM_RBUTTONDOWN || 
                        m.Msg == WM_RBUTTONUP || 
                        m.Msg == WM_RBUTTONDBLCLK)
                    {
                        return;
                    }
                }            
                base.WndProc(ref m);            
            }
        }以上代码经过测试,不会影响正常使用。测试环境:2005,2003请把
    ContextMenuStrip替换为:ContextMenu
      

  6.   

    呵呵,wuyazhe(我的宝贝叫阿刺) 兄还真是牛X,搞定了。