外部で宣言された GUI 要素のイベント ハンドラー内で非静的メソッドを呼び出そうとしたときクラスを使用すると、開発者は「非静的フィールド、メソッド、またはプロパティにアクセスするにはオブジェクト参照が必要です」というエラー メッセージが表示される場合があります。 ''..."
このエラーは、イベント ハンドラーがそのメソッドとフィールドにアクセスするためにクラスのインスタンスを必要とするために発生します。デフォルトでは、GUI 要素は使用する前にクラスのインスタンスを作成する必要があります。また、これらのコールバックはクラスの外部のスタンドアロン関数として定義されているため、必要なオブジェクト参照が不足しています。
この問題を解決するには、次の 2 つのオプションを検討してください:
public static void StartClick(object obj, EventArgs args) { // Non-static members can be accessed directly }
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
これらのオプションの選択は、意図したアプリケーションの設計によって異なります。グローバル静的変数は、テスト容易性と保守性の観点から望ましくない場合があります。一方、クラスの複数のインスタンスを作成する必要がない場合もあります。エラー メッセージの背後にある理由を理解することで、ソフトウェア エンジニアはアクセシビリティとデザイン パターンに関して十分な情報に基づいた意思決定を行うことができます。
以上がGUI イベント ハンドラーで非静的メソッドを使用すると「オブジェクト参照が必要です...」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。