当前位置:编程学习 > C#/ASP.NET >>

C# 20003 上下键

很是奇怪,我的程序中keydown keypress keyup 就是捕获不到上下键,IsInputKey 、ProcessDialogKey也重写了。还是无济于事。


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

万分感谢!!! --------------------编程问答-------------------- 笔记本键盘和普通电脑的键盘没有什么本质的区别吧?我是用的笔记本 --------------------编程问答-------------------- 设置keyPreview属性未true试试 --------------------编程问答-------------------- 把你的代码贴出来看看 --------------------编程问答-------------------- 设置了,其他的键都可以捕获的。 --------------------编程问答--------------------
引用 1 楼 vanbastenliuyingqin 的回复:
笔记本键盘和普通电脑的键盘没有什么本质的区别吧?我是用的笔记本


不会是这个问题。。还是代码写的有问题 --------------------编程问答-------------------- 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);
}
}

} --------------------编程问答-------------------- 测试程序很容易就捕获到了上下键,但是这个程序就是不行。用了IsInputKey方法后能捕获了,但是必须在keydown事件里加上messagebox,弹出一下才能触发。   --------------------编程问答-------------------- if(e.KeyCode==Keys.Down)
这个写法是没有问题的,你在那个地方打个断点调试一下,看是否跑进去了
还有this.btnNextPage_ItemClick(null,null);这个里面传null会不会你那边有影响,把当前对象传进去 --------------------编程问答-------------------- 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;
} --------------------编程问答-------------------- 这是重写的方法,这样写了以后,只要在keydow这个事件中加messagebox弹出一下,便可以触发上下键。 --------------------编程问答-------------------- 上下键触发不了keydown事件。打断点也没有用。 --------------------编程问答-------------------- 你的窗体上面是不是有其他地方获取了光标,你单独建一个没有任何控件的窗体试试 --------------------编程问答-------------------- 我单独用一个窗体做测试。上下键没有问题。但是这个窗体也能接受其他的键 如a b c等等。 --------------------编程问答--------------------
引用 13 楼 vanbastenliuyingqin 的回复:
我单独用一个窗体做测试。上下键没有问题。但是这个窗体也能接受其他的键 如a b c等等。

所有的键都会捕获,这个就要看你的判断了 --------------------编程问答-------------------- 我再检查一下吧!! 谢谢您 --------------------编程问答-------------------- KeyPreview = true
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up: { break; }
case Keys.Down: { break; }

}

 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,