我无法让ProcessCmdKey工作?

时间:2016-05-08 05:19:08

标签: c# winforms process cmd key

我的代码:

 using System.Windows.Forms

 class Class1
 {
      protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
      {
           if (keyData == Keys.Up)
           {
                Console.WriteLine("You pressed the Up arrow key");
                return true;
           }

           ...//and other code lines for Keys.Down, Keys.Left, Keys.Right

           return true;
      }
 }

但是我得到了错误:

  

(namespace)。(class).ProcessCmdKey(ref System.Windows.Forms.Message,System.Windows.Forms.Keys):找不到合适的方法来覆盖。

如果我关掉

 return true;

 return base.ProcessCmdKey (ref msg, keyData);

我收到错误:

  

'对象'不包含ProcessCmdKey的定义。

事实上,我的ProcessCmdKey文字甚至没有变成绿色,但当我知道它应该是绿色时它会保持黑色。

它是否适用于我正在使用的.NET Framework版本?如果有的话,我使用Microsoft Visual Studio 2013来编译和运行我的代码。

或者它与我班级的安全级别有关?我正在与公共级别的班级合作

我正在学习如何将用户键输入注册为初学者。我已经在互联网上看到了关于这个主题的所有内容,这与我们提出的代码相同,但是我无法让它发挥作用。欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

方法ProcessCmdKey在类System.Windows.Forms.Control中定义。因此,除非你在控件(或表单)中覆盖它,否则这将无效。

您的类Class1不会从控件继承,因此您无法覆盖该方法(因为它不存在)。

错误讯息

  

'object'不包含ProcessCmdKey的定义

几乎告诉你的确如此。 objectClass1(隐式)的基类,而类object(所有内容的基类)都没有该方法。

Form.ProcessCmdKey on MSDN

Control.ProcessCmdKey on MSND