winform响应方向键的急问题~~

frankfuse 2008-12-22 01:37:50
winform上如果有按钮的话,一按方向他就在按钮之见切换焦点了。而且焦点怎么也去不掉,这样form本身就无法相应方向键了啊。

有人说把keypreview属性设为true,我试了,这样可以响应其他键,还是不能相应方向的呀~高手帮忙。
...全文
168 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbbbbb888888 2008-12-24
  • 打赏
  • 举报
回复
这分,得的真怪....
bbbbbb888888 2008-12-22
  • 打赏
  • 举报
回复
来晚了,友情up
ICanUseThisID 2008-12-22
  • 打赏
  • 举报
回复

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode==上下左右)
{
DoSomething();
e.Handled = true;//加上这句
}
}
frankfuse 2008-12-22
  • 打赏
  • 举报
回复
都不行啊。。如果没有按钮,以上的都对,可是。。。现在不行哇。。。。
fontain 2008-12-22
  • 打赏
  • 举报
回复
用PreProcessMessage,
public override bool PreProcessMessage(ref Message msg)
{
if ((Keys)msg.WParam ==Keys.UP)
{
做你的事情;
如果不希望窗体继续收到按键,在这里return true;
}

return base.PreProcessMessage(ref msg);
}
zgke 2008-12-22
  • 打赏
  • 举报
回复
响应方向的事件

KeyUp KeyDown PreviewKeyDown


KeyPress的响应方式是Char
frankfuse 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hulihui 的回复:]
1)设置KeyPreview为true;2)捕获窗体KeyDown事件

C# code private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Left)
{
textBox1.Text = "abc123";
}
}
[/Quote]
"有人说把keypreview属性设为true,我试了,这样可以响应其他键,还是不能相应方向的呀~高手帮忙。"
我上面说清楚了老大。。
长沙三毛 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hulihui 的回复:]
1)设置KeyPreview为true;2)捕获窗体KeyDown事件
C# codeprivatevoidForm1_KeyDown(objectsender, KeyEventArgs e)
{if(e.KeyData==Keys.Left)
{
textBox1.Text="abc123";
}
}

[/Quote]增加 e.SuppressKeyPress = true;
长沙三毛 2008-12-22
  • 打赏
  • 举报
回复
1)设置KeyPreview为true;2)捕获窗体KeyDown事件
        private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Left)
{
textBox1.Text = "abc123";
}
}

111,130

社区成员

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

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

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