日期:2014-05-18  浏览次数:20745 次

winform焦点的问题
我的form里面有一个button和一个 combox

忧郁焦点始终在button和combox上换来换去 所以我的form不能接受ketdown事件

我把button和combox enable=false以后 问题是解决了 但是这个东西不能用了

请问各位有更好的办法吗?

------解决方案--------------------
C# code
 private void Form1_Load(object sender, EventArgs e)
        {
            this.KeyPreview=true;
        }

------解决方案--------------------
去截取系统的消息吧。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{

/* IntPtr ptr = this.textBox1.Handle;
* msg.HWnd在此处的msg中有HWnd,这个变量可以标示此时焦点处于那个控件上,因为每一个控件都有自己的句柄,而且都不相同,因此可以用此方法进行过滤消息,将button和一个 combox 的键盘事件放过
*/
return base.ProcessCmdKey(ref msg, keyData);
}