WinForm中有 TextBox1,TextBox2及TextBox3 三个TextBox控件并添加 KeyDown事件.在KeyDown事件中有处理 Enter, Down , Up等按键的方法(如清空三个TextBox中的文件本,将焦点赋于TextBox1).如果将TextBox的 Multiline 设置为False.一切正常,但是当Multiline为True 时,如果按下 Enter 键,在清空Text后( TextBox.Clear, TextBox.Text = "" , TextBox = null 都试过),控件中却有 Enter 键留下的换行,光标的位置无法定位在第一行( SelectionStart = 0 也不行).如果才用KeyPress事件,却可以,但不能捕获 Down, Up 等非字符键, TextBox中 Multiline换行位置该如何解决?

解决方案 »

  1.   

    看"晕了"最好能分清TextBox是TextBox1还是TextBox2,噢,不,可能是TextBox3
      

  2.   

    你在KeyDown中清空了TextBox,可是Enter键在KeyPress事件中又添加了一个回车。
      

  3.   

    TextBox1, TextBox2, TextBo3是我举的例子! 我想说的是将 TextBox 控件的Multiline属性设置为 True 时.在处理KeyDown事件中,如果按下 "Enter" 键后将 TextBox 的Text清空, e.Handled = true ,然后将焦赋给下一个TexBox控件.当它再次获取输入焦点时,光标位置始终是在第二行.如果用KeyPress事件处理就没有问题,但不能捕获 "Down, Up"键. KeyUp不行,因为需要在按下键时就能处理.
      

  4.   

    搞不懂你的需求。keypress可以处理把文本清空,keydown可以捕获down和up键。这不就结了,一个事件解决不了可以用两个事件一起处理啊。
      

  5.   

    最好能一个事件就处理好啊!不明白为什么KeyDown事件下将Text清空后的光标位置会在第二行.
      

  6.   

    因为keydown事件处理后并没有阻止keypress事件。一个事件类型是System.Windows.Forms.KeyEventArgs
    一个事件类型是System.Windows.Forms.KeyPressEventArgs。KeyPress不能截得虚键,所以方向键捕获不了。