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

如何让非焦点控件响应键盘按键?
程序界面上有一个panel,用来画画,画画用键盘控制。如果界面上没有其他控件,则form拥有焦点,我在form的keyDown里处理。当在界面上有其他可接受焦点的控件时,form则再也接收不到keydown事件了。这应该怎么办?

------解决方案--------------------
1.监视form_keypress事件,响应控件事件
2.监视prowmc事件
3.可以挂钩子
------解决方案--------------------
bool blnStartDraw = false;
private void button1_Click(object sender, System.EventArgs e)
{
blnStartDraw = true;
}

private void button2_Click(object sender, System.EventArgs e)
{
blnStartDraw = false;
}

const int WM_KEYDOWN = 0x100;

protected override bool ProcessCmdKey(
ref Message msg,
Keys keyData
)
{
if (msg.Msg == WM_KEYDOWN) 
{
if (blnStartDraw == true)
{
Graphics g = this.panel1.CreateGraphics();
g.DrawRectangle(System.Drawing.Pens.Red, 10, 10, 100, 100);
g.Dispose();
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}