C# WinForm的一个问题,请教

WangBo_NLPR 2011-02-26 02:50:55
问题:
假设一个winform应用程序,界面上有三个button,那么当一个button获得焦点时,用上下左右按键可以移动焦点

我想要的效果就是:
按上下左右键时,不进行焦点的移动


请问如何实现
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liucuiqiang 2011-02-28
  • 打赏
  • 举报
回复
switch (keyData)
{
case Keys.Up:
case Keys.Down:
case Keys.Left:
case Keys.Right:
if(button1.Focused)
return true;
}
WangBo_NLPR 2011-02-26
  • 打赏
  • 举报
回复
谢谢各位,就我第二个问题,有何高见呢?

我要实现的大致功能是:

点击button,然后将焦点移动到一个定制panel,然后改panel需要响应上下左右的按键事件

通过上面的方法可以在panel聚焦时,按上下左右按键时,不会失去焦点,但为何对上下左右没有响应呢?
WangBo_NLPR 2011-02-26
  • 打赏
  • 举报
回复
谢谢bdmh,这个方法挺强大的,我还有一个问题想请教一下

通过你的方法已经禁用了焦点的移动,另外,我也定制了一个可以接受键盘事件响应的panle,可为什么panel无法处理上下左右的键盘事件呢??其他按键都可以
yanele 2011-02-26
  • 打赏
  • 举报
回复
楼上的重载方法
wuyq11 2011-02-26
  • 打赏
  • 举报
回复
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Up:
MessageBox.Show("Up");
return true;
case Keys.Down:
MessageBox.Show("Down");
return true;
case Keys.Left:
MessageBox.Show("Left");
return true;
case Keys.Right:
MessageBox.Show("Right");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
bdmh 2011-02-26
  • 打赏
  • 举报
回复
在窗体中重载下面代码

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Left)
{
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

110,533

社区成员

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

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

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