它给了我这样一个错误,我似乎找不出问题是什么。
private void Form1.KeyDown(object sender, KeyEventArgs e) // **THE ERROR HERE**
{
if (ListBox1.Items.Contains(e.KeyCode))
{
ListBox1.Items.Remove(e.KeyCode);
ListBox1.Refresh();
if (timer1.Interval > 400)
{
timer1.Interval -= 10;
}
if (timer1.Interval > 250)
{
timer1.Interval -= 7;
}
if (timer1.Interval > 100)
{
timer1.Interval -= 2;
}
difficultyProgressBar.Value = 800 - timer1.Interval;
stats.Update(true);
}
else
{
stats.Update(false);
}
correctLabel.Text = "Correct: " + stats.correct;
missedLabel.Text = "Missed: " + stats.missed;
totalLabel.Text = "Total: " + stats.total;
accuracyLabel.Text = "Accuracy: " + stats.accuracy + "%";
}这是一些教程中的代码,所以它应该可以工作。可能的问题是什么?
发布于 2012-05-16 03:41:03
您的第一行应如下所示:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
...
}没有圆点。
点使编译器认为您引用了表单的KeyDown事件,而您只需要一个侦听该事件的方法。
发布于 2012-05-16 03:42:13
Interfacename.methodname语法是为显式接口实现保留的。接口只包含公共方法,因此"private“是非法的。
发布于 2012-05-16 03:42:49
在VB中,当您声明一个事件处理程序时,您添加了Handles <Class>.<Event>,它会自动为您挂接所有内容。在C#中,事件处理程序只是附加到事件的方法。因此,您应该将方法名称重命名为Form1_KeyDown。但是,您仍然需要将其挂钩(通过Visual Studio设计器或在代码中)。
public class Form1 : Form
{
...
public Form1()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(this.Form1_KeyDown);
}
...
private void Form1_KeyDown(object sender, KeyEventArgs e) { ... }
}https://stackoverflow.com/questions/10607642
复制相似问题