默认情况下,在文本框中输入一些字符时,光标会在最后一个字符的后面,当我使用键盘上的左右键时,光标会左右移动;现在的要求:当我使用键盘上的左右键时,光标不允许左右移动,并且,光标始终停留在最后一个字符的后面。请问:该如何设置?

解决方案 »

  1.   

    在文本的keydown事件中设置keycode= 左右键码失效
      

  2.   

    在form中添加
      protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if ((ActiveControl is TextBox ) && (keyData == Keys.Left   || keyData == Keys.Right||keyData==Keys.Up||keyData==Keys.Down  ))
                {
                        SendKeys.Send("");
                    return true;
                }
                else
                    return base.ProcessCmdKey(ref msg, keyData);
            }
      

  3.   

     private void txtPch_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == char(13))
                {e.Handled = false;
                }
            }
    好像只能在KeyPress 中实现。
      

  4.   

    5楼说的KeyPress事件捕获不到光标键参考如下代码:
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            //case Keys.Up:
            //case Keys.Down:
            case Keys.Left:
            case Keys.Right:
                e.Handled = true;
                break;
        }
    }PS:不过屏蔽左右键并不能完全将光标固定,因为用鼠标点击、上下键、home、End键等都可以控制光标。
      

  5.   

    在OnKeyDown事件里判断方向键按下:
    switch(Key)
    {
      case VK_UP:
           .....................       
           break;
      case VK_DOWN:
           .......
           break;
      case VK_LEFT:
           .......
           break;  case VK_RIGHT:
           ....
           break;
    }
    键盘键值参考
      

  6.   

    zswang比较帅,但是小菜有点不懂,可否请教下
    case Keys.Left:
            case Keys.Right:
                e.Handled = true;
    这3句的意思应该是允许事件吧,期待楼上给解释下谢谢!
      

  7.   

    我把e.Handled=false还是不行!
    正如10楼所说!左右键屏蔽不掉~~那该如何屏蔽呢?
      

  8.   

     private void txtJC_KeyDown(object sender, KeyEventArgs e)
            {
                switch (e.KeyCode)
                {
                    case Keys.Left:
                        e.Handled = false;
                        break;
                    case Keys.Right:
                        e.Handled = false;
                        break;
                    default:
                        break;
                }
            }麻烦你看看哪里错了。当我输完字符时,按左右键光标还是可以移动的。
      

  9.   

    我终于明白了!一切归功于zswang!!
      

  10.   

    不是测试不测试的问题,我的textbox就没有那个事件,刚转行没几天,水平不行!
      

  11.   

    靠,原来是winform我在web里面怎么调试不出来呢,郁闷!