日期:2014-05-17  浏览次数:21055 次

如何不受窗体焦点影响,保持按下enter时键触发且仅触发一个button事件
我在做个计算器,想要按下enter键之后相当于按下=号,但是只要在计算器里用鼠标点击任何一个不是=号的button之后按enter就变成按下其他键了,该怎么解决呢?
要保持不管何时只要按下enter键则触发且仅触发button1,就是可不可以让enter不受焦点影响绑定button1的事件,或者每次按下其他键之后让焦点回到button1?
求指点,谢谢!

------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.keyeventargs.handled.aspx
------解决方案--------------------
这样写,没有问题的。
protected override bool ProcessDialogKey(Keys keyData)
{
    switch (keyData)
    {
        case Keys.D0: n0.PerformClick(); break;
        case Keys.D1: n1.PerformClick(); break;
        case Keys.D2: n2.PerformClick(); break;
        case Keys.D3: n3.PerformClick(); break;
        case Keys.D4: n4.PerformClick(); break;
        case Keys.D5: n5.PerformClick(); break;
        case Keys.D6: n6.PerformClick(); break;
        case Keys.D7: n7.PerformClick(); break;
        case Keys.D8: n8.PerformClick(); break;
        case Keys.D9: n9.PerformClick(); break;
        case Keys.Enter: equal.PerformClick(); break;
        case Keys.OemPeriod: npoint.PerformClick(); break;
        case Keys.Back: deleteone.PerformClick(); break;
        case Keys.Shift 
------解决方案--------------------
 Keys.Oemplus: add.PerformClick(); break;
        case Keys.OemMinus: minus.PerformClick(); break;
        case Keys.Shift 
------解决方案--------------------
 Keys.D8: multiply.PerformClick(); break;
        case Keys.OemQuestion: divide.PerformClick(); break;
        case Keys.Oemplus: equal.PerformClick(); break;
    }
    return false;
}