1

私はC#の世界に不慣れで、以下のコードを使用してリスナー内で別の関数を呼び出そうとしています:

    private void Form1_Load(object sender, EventArgs e)
    {
        listener = new GestureListener(100);
        listener.onGesture += listener_onGesture;
        controller = new Controller(listener);
    }

    static void listener_onGesture(Gesture gesture)
    {
        string gestures = "";

        foreach (Gesture.Direction direction in gesture.directions) {
            gestures = direction.ToString();
        }

        int howManyFingers = gesture.fingers;

        if (gestures == "Left" && howManyFingers == 2) {
            test();
        } else {
            Console.WriteLine("gestured " + gestures + " with " + gesture.fingers + " fingers.");
        }
    }

    private void test()
    {
        pdf.gotoNextPage();
    }

ただし、それを行うとうまくいかないようです。test();行でエラーが表示されます。は:

非静的フィールド、メソッド、またはプロパティ「LeapDemoTest.Form1.test()」にはオブジェクト参照が必要です

これどうやってするの?

4

2 に答える 2

2

これlistener_onGestureは静的メソッドであるためです。つまり、メソッドはクラスの特定のインスタンスに関連付けられていません。ただし、testこれはインスタンス メソッドなので、特定のインスタンスに限定されます。

「pdf」の範囲に応じて 3 つのオプションが表示されますが、オプション 1 をお勧めします。

  • インスタンスメソッドを作成します (キーワードlistener_onGestureを削除します)static
  • 静的メソッドを作成します。これは、静的メンバーでもあるtest場合にのみ機能します。pdf
  • ややハック -のプロパティをForm調べてイベントを呼び出したインスタンスを見つけ、そのインスタンスでメソッドを呼び出します。sendertest
于 2013-05-22T20:34:04.357 に答える