【问题标题】:No overload for "MainTimer_Tick" matches delegate "System.EventHandler"“MainTimer_Tick”没有重载匹配委托“System.EventHandler”
【发布时间】:2014-06-29 13:17:14
【问题描述】:

我已经在这里阅读了很多问题,但我不知道它如何帮助解决我遇到的破坏游戏的错误。

在我的马里奥游戏中,我有GameGUI.cs 的形式。我有一个叫MainTimer 的计时器。当我尝试运行错误

“MainTimer_Tick”没有重载匹配委托“System.EventHandler”

出现。不知道怎么回事。

//
// MainTimer
//
this.MainTimer.Enabled = true;
this.MainTimer.Interval = 16;
this.MainTimer.Tick += new System.EventHandler(this.MainTimer_Tick);

我有很多 MainTimer_Tick 的代码。我认为这就是问题所在。

private void MainTimer_Tick(object sender, KeyEventArgs e)

这是问题吗?

【问题讨论】:

  • 复制/粘贴后要做的第一件事是确保新代码对于其预期目的是正确的。 KeyDown/KeyPress 事件与 Timer.Tick 事件的参数不同

标签: c# timer


【解决方案1】:

你需要EventArgs 而不是KeyEventArgs

替换这个:

private void MainTimer_Tick(object sender, KeyEventArgs e)

有了这个:

private void MainTimer_Tick(object sender, EventArgs e)

编辑:

如果您想处理表单上的键(在任何控件例如:文本框上),您需要处理该控件的KeyDown 事件,如下所示:

//set the KeyPreview of the Form to true

this.KeyPreview=true;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
        //code to handle the key down events
}

【讨论】:

  • 我尝试了 EventArgs,但其中包含 KeyCodes,这会导致致命的语法错误。
  • 那么你应该处理表单上的KeyDown 事件,让我更新我的帖子。
  • 谢谢。该错误已修复,我现在可以继续编码,以便马里奥可以运行!
  • @DOODC84: 不客气 :) 很高兴能帮到你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
相关资源
最近更新 更多