1

フォームの特定の時間のラベルにテキストを表示したいのですが、これはこれまでに試したコードです:

private void ShowTextForParticularTime(String caption)
        {
            Timer t = new Timer { Interval = 2000, Enabled = true };
            t.Tick += new EventHandler(OnTimerEvent(caption));
        }

        private void OnTimerEvent(object sender, EventArgs e,String caption)
        {
            barStaticItem3.Caption = caption;
        }

私の質問は、「キャプション」パラメーターを OnTimerEvent メソッドに設定する方法です。これは、作成したコードが機能しないため、次のエラーが発生するためです。

メソッド 'OnTimerEvent' のオーバーロードは '1' 引数を取らない

4

1 に答える 1

1

代わりにこれを使用してください:

t.Tick += (sender, args) => OnTimerEvent(sender, args, caption);

理由は、イベントにイベント ハンドラーを割り当てる必要があるためです。しかし、new EventHandler(OnTimerEvent(caption));あなたが実際にそれを呼び出そうとしていると述べるとき。メソッドには 3 つのパラメーター (sender、e、caption) が必要なため、コンパイル時の呼び出しはもちろん失敗します。

代わりに、ラムダ経由で匿名のデリゲートを作成する場合は、それらの構文とクロージャーを利用して、3 番目のcaptionパラメーターを渡すときにイベントをワイヤリングできます。

于 2012-09-26T21:58:15.890 に答える