winform 怎样使键盘左右键失效?

jinmiwa 2008-05-21 08:43:48
默认情况下,在文本框中输入一些字符时,光标会在最后一个字符的后面,当我使用键盘上的左右键时,光标会左右移动;

现在的要求:当我使用键盘上的左右键时,光标不允许左右移动,并且,光标始终停留在最后一个字符的后面。

请问:该如何设置?
...全文
397 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaye12 2008-05-21
  • 打赏
  • 举报
回复
楼主既然明白了,那怎么不把正确答案公布下那????
知识共享下吗!
chaye12 2008-05-21
  • 打赏
  • 举报
回复
靠,原来是winform我在web里面怎么调试不出来呢,郁闷!
chaye12 2008-05-21
  • 打赏
  • 举报
回复
不是测试不测试的问题,我的textbox就没有那个事件,刚转行没几天,水平不行!
jinmiwa 2008-05-21
  • 打赏
  • 举报
回复
我终于明白了!一切归功于zswang!!

jinmiwa 2008-05-21
  • 打赏
  • 举报
回复
我知道你已经很崩溃了。。。
jinmiwa 2008-05-21
  • 打赏
  • 举报
回复
 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;
}
}


麻烦你看看哪里错了。

当我输完字符时,按左右键光标还是可以移动的。
王集鹄 2008-05-21
  • 打赏
  • 举报
回复
[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E5%93%AD.gif]图[/img]10楼代码已经帖出来了,怎么都不自己调试一遍。
jinmiwa 2008-05-21
  • 打赏
  • 举报
回复
我把e.Handled=false还是不行!
正如10楼所说!左右键屏蔽不掉~~那该如何屏蔽呢?
王集鹄 2008-05-21
  • 打赏
  • 举报
回复
少动口,多动手。这种测试一下就知道的事情别问。[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E5%90%B8%E7%83%9F.gif]图[/img]
chaye12 2008-05-21
  • 打赏
  • 举报
回复
zswang比较帅,但是小菜有点不懂,可否请教下
case Keys.Left:
case Keys.Right:
e.Handled = true;
这3句的意思应该是允许事件吧,期待楼上给解释下谢谢!
cylot 2008-05-21
  • 打赏
  • 举报
回复
在OnKeyDown事件里判断方向键按下:
switch(Key)
{
case VK_UP:
.....................
break;
case VK_DOWN:
.......
break;
case VK_LEFT:
.......
break;

case VK_RIGHT:
....
break;
}
键盘键值参考
王集鹄 2008-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jinmiwa 的回复:]
使用5楼的方法。。
好理解。
谢谢各位了。。
结贴。。
[/Quote]都捕获不了,还好理解。。。[img=http://p.blog.csdn.net/images/p_blog_csdn_net/zswang/%E6%B1%97.gif]图[/img]帖已结就不说话了。
王集鹄 2008-05-21
  • 打赏
  • 举报
回复
5楼说的KeyPress事件捕获不到光标键。。。[img=http://p.blog.csdn.net/images/p_blog_csdn_net/renrousousuo/29.gif]图[/img]

参考如下代码:
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键等都可以控制光标。
jinmiwa 2008-05-21
  • 打赏
  • 举报
回复
使用5楼的方法。。
好理解。
谢谢各位了。。
结贴。。
cnliia 2008-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yagebu1983 的回复:]
通过键码判断!
[/Quote]
判断了用户输入的键值之后,如果是按的左键就将光标后移,这是最基本最好理解的方法.
chuyi_521 2008-05-21
  • 打赏
  • 举报
回复
楼上正解
jinmiwa 2008-05-21
  • 打赏
  • 举报
回复
请问LS,如何调用这个方法?
李洪喜 2008-05-21
  • 打赏
  • 举报
回复
private void txtPch_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == char(13))
{e.Handled = false;
}
}
好像只能在KeyPress 中实现。
lsj_zrp 2008-05-21
  • 打赏
  • 举报
回复
在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);
}
yagebu1983 2008-05-21
  • 打赏
  • 举报
回复
通过键码判断!
加载更多回复(2)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧