请问TextBox控件怎么让他不能获得鼠标事件?
鼠标对TextBox.Text中的数据不能改变
也就是说只能用键盘对TextBox输入,或者删格(←)
切不能用方向键对其中的光标移动(相当于屏蔽四个方向键)
但是能输入的...不是Enable属性请达人帮我看看~~谢谢了~~

解决方案 »

  1.   


            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                e.Handled = Shadow(e);
            }        private bool Shadow(KeyEventArgs e)
            {
                switch (e.KeyCode)
                {
                    case Keys.Home:
                    case Keys.End:
                    case Keys.PageUp:
                    case Keys.PageDown:
                    case Keys.Up:
                    case Keys.Down:
                    case Keys.Left:
                    case Keys.Right:
                        return true;
                    default:
                        return false;
                }
            }
      

  2.   

    鼠标对TextBox.Text中的数据不能改变?
    你说的是右键复制,剪切吧!
                new TextBox().ContextMenu = null;
                new TextBox().ContextMenuStrip = null;针对textbox1屏蔽四个方向键:
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (textBox1.Focused)
                {
                    if (keyData == Keys.Down ||
                        keyData == Keys.Up ||
                        keyData == Keys.Right ||
                        keyData == Keys.Left)
                        return true;
                }
                return base.ProcessCmdKey(ref msg, keyData);
            }如果通用,最好自己写控件
      

  3.   

    鼠标对TextBox.Text中的数据不能改变? 
    你说的是右键复制,剪切吧! 

    还有中情况比如说
    文本框里有5个字:
    我爱你中国用鼠标可以选种中国,然后往前拖,变成了中国我爱你
    这种情况反正是鼠标的事件都不能有..
      

  4.   

    this.textBox1.ContextMenuStrip = new ContextMenuStrip();
    this.textBox1.ContextMenu = new ContextMenu();
    任选一种,为null的话就是默认的右键菜单默认textbox是不能drag的
      

  5.   

    如果是这样的话,索性实现IMessageFilter的PreFilterMessage方法来拦截消息
    public bool  PreFilterMessage(ref Message m)
            {
                    if (m.Msg == 512 || m.Msg == 513 || m.Msg == 517)//鼠标的消息
                    {
                        if (c.Focused)
                        {
                            return true;//拦截消息
                        }
                    }
                return false;//不拦截消息
            }
      

  6.   

    如果是这样的话,索性实现IMessageFilter的PreFilterMessage方法来拦截消息
    public bool  PreFilterMessage(ref Message m)
            {
                    if (m.Msg == 512 || m.Msg == 513 || m.Msg == 517)//鼠标的消息
                    {
                        if (c.Focused)
                        {
                            return true;//拦截消息
                        }
                    }
                return false;//不拦截消息
            }