C# 20003 上下键
很是奇怪,我的程序中keydown keypress keyup 就是捕获不到上下键,IsInputKey 、ProcessDialogKey也重写了。还是无济于事。但是我的测试程序就可以捕获到。没有什么其他的操作。 大家帮我想想这是怎么了呢!!!
万分感谢!!! --------------------编程问答-------------------- 笔记本键盘和普通电脑的键盘没有什么本质的区别吧?我是用的笔记本 --------------------编程问答-------------------- 设置keyPreview属性未true试试 --------------------编程问答-------------------- 把你的代码贴出来看看 --------------------编程问答-------------------- 设置了,其他的键都可以捕获的。 --------------------编程问答--------------------
不会是这个问题。。还是代码写的有问题 --------------------编程问答-------------------- 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等等。 --------------------编程问答--------------------
所有的键都会捕获,这个就要看你的判断了 --------------------编程问答-------------------- 我再检查一下吧!! 谢谢您 --------------------编程问答-------------------- KeyPreview = true
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up: { break; }
case Keys.Down: { break; }
}
}
补充:.NET技术 , C#