微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 我无法让ProcessCmdKey工作?

我的代码

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): no suitable method found to override.

如果我换掉了

return true;

对于

return base.ProcessCmdKey (ref msg,keyData);

我收到错误

‘object’ does not contain a deFinition for ProcessCmdKey.

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

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

或者它与我班级的安全水平有关?我正在和一个公共级别的班级一起工作

我刚刚学习如何将用户键输入注册为初学者.我已经在互联网上查看了这个主题,这是相同的代码,但我无法让它工作.欢迎任何帮助.

解决方法

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

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

错误消息

‘object’ does not contain a deFinition for ProcessCmdKey

几乎可以告诉你这一点. object是Class1的基类(隐式),类对象(所有的基类)没有该方法.

Form.ProcessCmdKey on MSDN

Control.ProcessCmdKey on MSND

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐