黑马程序员技术交流社区

标题: winform panel添加一个button按钮 窗体的KeyDown事件不执行了 [打印本页]

作者: 〆、单曲循环    时间: 2013-12-19 09:07
标题: winform panel添加一个button按钮 窗体的KeyDown事件不执行了
load事件中添加button代码:
  1. ///开始按钮
  2.             Button btnStart = new Button();
  3.             btnStart.Text = "开始";
  4.             btnStart.Size = new Size(80, 30);
  5.             btnStart.Location = new Point((pl.Size.Width - btnStart.Size.Width) / 2, (pl.Size.Height - btnStart.Size.Height) / 2);
  6.             btnStart.Click += Start_Click;
  7.             //pl.Controls.Add(btnStart);
复制代码


formKeyDown 事件中 第一行代码为MessageBox.Show(e.KeyValue.Tostring());

这两个事件应该没关系才对啊  怎么会冲突的
作者: 诱惑灵魂    时间: 2013-12-19 21:36
原因是由于窗体中添加了控件,于是焦点就在其中一个控件上,如果要处理的事件窗体和获取焦点的控件都同时拥有,系统就会将键盘的操作键值直接传递给这个获取焦点的控件。就出现你这种问题了
解决:获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。
如果窗体将接收所有键事件,则为 true;如果窗体上当前选定控件接收键事件,则为 false。默认为 false。
作者: 〆、单曲循环    时间: 2013-12-20 08:36
诱惑灵魂 发表于 2013-12-19 21:36
原因是由于窗体中添加了控件,于是焦点就在其中一个控件上,如果要处理的事件窗体和获取焦点的控件都同时拥 ...

KeyPreview属性设为true后所有的字符都是可以出发KeyDown事件的 但是上下左右键不可以    已找到解决办法  还是谢谢童鞋的回答




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2