请问兄弟们,如何找到ProcessCmdKey() 方法protected override bool ProcessCmdKey提示找不到原方法

解决方案 »

  1.   

    找不到源方法是因为在你的基类中并没有定义这样一个方法,所以你无法重载。
    你需要用这个方法,你得先找到相应的类。至于如何去找:
    1:把有可能的程序集(包括类库)等全部添加引用进工程。
    2:在ClassView中查找。打开ClassView的方法:菜单View->ClassView。注意在ClassView的上方有一个Search,你试试输入Process看看。
      

  2.   


    错误 24 : 没有找到适合的方法来重写 代码如下:
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (keyData == Keys.Enter)
                {                if (ActiveControl is Button)
                    {
                        ((Button)ActiveControl).PerformClick();
                    }
                    else
                    {
                        SendKeys.Send("{TAB}");
                    }                return true;
                }
                if (keyData == Keys.Left)
                {
                    if (ActiveControl is TextBox)
                    {
                        TextBox tb = ((TextBox)ActiveControl);
                        if (tb.SelectionStart == 0)
                        {
                            SendKeys.Send("+{TAB}");
                            return true;
                        }
                    }
                    else
                    {
                        SendKeys.Send("+{TAB}");
                        return true;
                    }
                }
                return base.ProcessCmdKey(ref msg, keyData);
            }
      

  3.   

    基类可能没有实现这个方法.在程序里你输入override后然后直接敲空格,会给你列出所有可override的方法签名的。若没有,是无法override的。
      

  4.   

    我没写ProcessCmdKey()方法,我只是从网上复制的protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 代码解决回车的问题,但有的窗口正常
      

  5.   

    我按您的方法override后没有列出此方法,但为什么有的窗体运行正常?
      

  6.   

    估计是你粘贴的位置不对
    Control类中就定义了这个方法,所以如果你的基类是Form的话,肯定不会出现这样的情况
      

  7.   

    我粘贴在Login_KeyDown方法下面,应该位置正确       private void Login_KeyDown(object sender, KeyEventArgs e)
            {        }        //protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            //{
            //    if (keyData == Keys.Enter)
            //    {        //        if (ActiveControl is Button)
            //        {
            //            ((Button)ActiveControl).PerformClick();
            //        }
            //        else
            //        {
            //            SendKeys.Send("{TAB}");
            //        }        //        return true;
            //    }
            //    if (keyData == Keys.Left)
            //    {
            //        if (ActiveControl is TextBox)
            //        {
            //            TextBox tb = ((TextBox)ActiveControl);
            //            if (tb.SelectionStart == 0)
            //            {
            //                SendKeys.Send("+{TAB}");
            //                return true;
            //            }
            //        }
            //        else
            //        {
            //            SendKeys.Send("+{TAB}");
            //            return true;
            //        }
            //    }
            //    return base.ProcessCmdKey(ref msg, keyData);
            //}
      

  8.   

    我粘贴在Login_KeyDown方法下面,应该位置正确跟Login_KeyDown没关系,要看你放在哪个类里面
    class Form1:Form//基类是Form就应该没问题
    {
     private void Login_KeyDown(object sender, KeyEventArgs e) 
            {         }
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    {
    }
    }
      

  9.   

    同意学海无涯的说法.
    Form肯定有.