0

このようなエラーが発生し、問題が何であるかがわかりません。

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 + "%";


    }

これはチュートリアルのコードなので、動作するはずです。何が問題になる可能性がありますか?

4

4 に答える 4

6

最初の行は次のようになります。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    ...
}

ドットなし。

ドットは、フォームの KeyDown イベントを参照しているとコンパイラに思わせますが、そのイベントをリッスンするメソッドが必要なだけです。

于 2012-05-15T19:41:02.897 に答える
3

Interfacename.methodname 構文は、明示的なインターフェイスの実装用に予約されています。インターフェイスには public メソッドのみが含まれているため、「private」は違法です。

于 2012-05-15T19:42:12.760 に答える
1

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) { ... }
}
于 2012-05-15T19:42:49.227 に答える