C# 20003 上下键

vanbastenliuyingqin 2010-09-16 04:47:18
很是奇怪,我的程序中keydown keypress keyup 就是捕获不到上下键,IsInputKey 、ProcessDialogKey也重写了。还是无济于事。


但是我的测试程序就可以捕获到。没有什么其他的操作。 大家帮我想想这是怎么了呢!!!

万分感谢!!!
...全文
136 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-09-16
  • 打赏
  • 举报
回复
KeyPreview = true
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up: { break; }
case Keys.Down: { break; }

}
}

  • 打赏
  • 举报
回复
我再检查一下吧!! 谢谢您
HolyPlace 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 vanbastenliuyingqin 的回复:]
我单独用一个窗体做测试。上下键没有问题。但是这个窗体也能接受其他的键 如a b c等等。
[/Quote]
所有的键都会捕获,这个就要看你的判断了
  • 打赏
  • 举报
回复
我单独用一个窗体做测试。上下键没有问题。但是这个窗体也能接受其他的键 如a b c等等。
HolyPlace 2010-09-16
  • 打赏
  • 举报
回复
你的窗体上面是不是有其他地方获取了光标,你单独建一个没有任何控件的窗体试试
  • 打赏
  • 举报
回复
上下键触发不了keydown事件。打断点也没有用。
  • 打赏
  • 举报
回复
这是重写的方法,这样写了以后,只要在keydow这个事件中加messagebox弹出一下,便可以触发上下键。
  • 打赏
  • 举报
回复
protected override bool IsInputKey(Keys keyData)
{
switch(keyData)
{
case Keys.Down:
this.btnNextPage_ItemClick(null,null);
break;
case Keys.Up:
this.btnPrePage_ItemClick(null,null);
break;
case Keys.Left:
this.btnLeft_ItemClick(null,null);
break;
case Keys.Right:
this.btnRight_ItemClick(null,null);
break;

}
return true;
}
HolyPlace 2010-09-16
  • 打赏
  • 举报
回复
if(e.KeyCode==Keys.Down)
这个写法是没有问题的,你在那个地方打个断点调试一下,看是否跑进去了
还有this.btnNextPage_ItemClick(null,null);这个里面传null会不会你那边有影响,把当前对象传进去
  • 打赏
  • 举报
回复
测试程序很容易就捕获到了上下键,但是这个程序就是不行。用了IsInputKey方法后能捕获了,但是必须在keydown事件里加上messagebox,弹出一下才能触发。
  • 打赏
  • 举报
回复
private void CFrmView_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
//MessageBox.Show(e.KeyCode.ToString());
//MessageBox.Show(e.ToString());

if(e.KeyCode==Keys.Down)
this.btnNextPage_ItemClick(null,null);

if(e.KeyCode==Keys.Menu)
this.btnNextPage_ItemClick(null,null);

if(e.KeyCode==Keys.Up)
this.btnPrePage_ItemClick(null,null);
if((Control.ModifierKeys & Keys.Control)==Keys.Control)
{
if(e.KeyCode==Keys.A)
{
//MessageBox.Show("按下了ctrl+A");
btnSelAll_ItemClick(null,null);
}
}

}
porschev 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vanbastenliuyingqin 的回复:]
笔记本键盘和普通电脑的键盘没有什么本质的区别吧?我是用的笔记本
[/Quote]

不会是这个问题。。还是代码写的有问题
HolyPlace 2010-09-16
  • 打赏
  • 举报
回复
把你的代码贴出来看看
  • 打赏
  • 举报
回复
设置了,其他的键都可以捕获的。
HolyPlace 2010-09-16
  • 打赏
  • 举报
回复
设置keyPreview属性未true试试
  • 打赏
  • 举报
回复
笔记本键盘和普通电脑的键盘没有什么本质的区别吧?我是用的笔记本

111,129

社区成员

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

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

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