我要写一个windows CE 程序,需要enter键模拟tab 键的功能,我尝试了很多方法,但一直没有找到理想的方法。方法一:
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == "Return")
            {
                SendKeys.Send("{TAB}");
            }
        }
但是这种方法问题是在文本框中实现焦点切换还可以,遇到button按钮就不灵了,不知道为什么
方法二:在方法一的基础之上,对每个按钮添加响应事件
 private void button1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == "Return")
            {
                MessageBox.Show("button1_KeyDown 中执行!");
                SendKeys.Send("{TAB}");
            }
        }        private void button2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == "Return")
            {
                MessageBox.Show("button2_KeyDown 中执行!");
                SendKeys.Send("{TAB}");
            }
        }        private void button3_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == "Return")
            {
                MessageBox.Show("button3_KeyDown 中执行!");
                SendKeys.Send("{TAB}");
            }
        }
问题:这种方法太麻烦,我程序中友很多控件,每个按钮得添加一次类似代码,工作量大,程序执行效率低。
方法三:
        protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.Enter && (this.ActiveControl is TextBox || this.ActiveControl is Button || this.ActiveControl is ComboBox))
            {
                keyData = Keys.Tab;
            }
            return base.ProcessDialogKey(keyData);
        } 这种方法在windows xp 环境下面可以很好运行,但是在windows CE 下面提示: error CS0115:  no suitable method found to override。请高手给出方法啊,在线坐等。