winform 怎样使键盘左右键失效? 默认情况下,在文本框中输入一些字符时,光标会在最后一个字符的后面,当我使用键盘上的左右键时,光标会左右移动;现在的要求:当我使用键盘上的左右键时,光标不允许左右移动,并且,光标始终停留在最后一个字符的后面。请问:该如何设置? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在文本的keydown事件中设置keycode= 左右键码失效 在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); } private void txtPch_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == char(13)) {e.Handled = false; } }好像只能在KeyPress 中实现。 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键等都可以控制光标。 在OnKeyDown事件里判断方向键按下:switch(Key){ case VK_UP: ..................... break; case VK_DOWN: ....... break; case VK_LEFT: ....... break; case VK_RIGHT: .... break;}键盘键值参考 zswang比较帅,但是小菜有点不懂,可否请教下case Keys.Left: case Keys.Right: e.Handled = true;这3句的意思应该是允许事件吧,期待楼上给解释下谢谢! 我把e.Handled=false还是不行!正如10楼所说!左右键屏蔽不掉~~那该如何屏蔽呢? 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; } }麻烦你看看哪里错了。当我输完字符时,按左右键光标还是可以移动的。 我终于明白了!一切归功于zswang!! 不是测试不测试的问题,我的textbox就没有那个事件,刚转行没几天,水平不行! 靠,原来是winform我在web里面怎么调试不出来呢,郁闷! 为什么我的按钮大小调试的时候和设计的时候不一样 Winform问题 datagridview设置不能编辑而且要有横竖个滚动条 这样把控件中得到的值转换成大写? 好心人帮助 找C1.Win.C1FlexGrid控件 (for vs2005 c#) C#远程复制文件~~~! 请求高手帮忙分页问题 我用ADO.NET来运行Oracle的存储过程,有一个返回值是数组类型的,我想问一下,我设这个返回值的类型应设为什么 求一个C#写的 postmessage 鼠标移动和点击的例子。 怎样把一段文字里的“回车”,“换行符”取替成"<br>"? 超超超新手问题 6行简单的代码
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);
}
{
if (e.KeyChar == char(13))
{e.Handled = false;
}
}
好像只能在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键等都可以控制光标。
switch(Key)
{
case VK_UP:
.....................
break;
case VK_DOWN:
.......
break;
case VK_LEFT:
.......
break; case VK_RIGHT:
....
break;
}
键盘键值参考
case Keys.Left:
case Keys.Right:
e.Handled = true;
这3句的意思应该是允许事件吧,期待楼上给解释下谢谢!
正如10楼所说!左右键屏蔽不掉~~那该如何屏蔽呢?
{
switch (e.KeyCode)
{
case Keys.Left:
e.Handled = false;
break;
case Keys.Right:
e.Handled = false;
break;
default:
break;
}
}麻烦你看看哪里错了。当我输完字符时,按左右键光标还是可以移动的。