2011-09-15 27 views
2

C + +/MFCで長年開発されていることは明白です。どのように私はボタンクリックイベントハンドラを別のハンドラから呼び出す/呼び出すのですか? (C#)

ボタンクリックのイベントハンドラで、別のイベントハンドラ/クリックを再利用したいと思います。しかし、私はそれを行う方法を把握していないようです。

問題を引き起こす可能性があるビットは、「発射」したい第2のアイテムのハンドラが同じフォーム/コンテキスト上にないことです。

...私はちょうどメソッドを呼び出すことができるはずと思われる

しかし、私はそれを行うことができるようには見えません。

これは私がよりよい解決策は、元のイベントハンドラによって行われた作業が関数内に含まれるようにコードをリファクタリングすることだと思うのコンパクトなフレームワーク/ Winのモバイル

答えて

3

  • ハンドラの含むクラスのインスタンスへのアクセスを提供します(つまり、そのオブジェクトへの参照)
  • 任意のインスタンスは、それを直接参照できるようにハンドラ静的ください
  • 他のいくつかの世界的に使用可能なオブジェクト(静的、シングルトン、など)にハンドラを入れますので、そのようなこと
  • を心配する必要はありませんので、両方の消費者はそれを
  • 使用イベントの集約を提供するフレームワークを使用することができます
1

です。

元のハンドラと新しいハンドラの両方が同じ機能を呼び出します。

+0

これは条件付きです。イベント1が発生した後も常にイベント2を起こしたいと思うのは当然ではないかもしれません。 – skaz

+0

2つを一緒に呼び出す必要はありません。いずれかの条件が適切であれば、1つ、両方、またはいずれも関数を呼び出すことができません。または私は何かを逃していますか? – Widor

2

共通コードをプライベートメソッドに分解する方法はありますか?次に、両方のハンドラからそのメソッドを呼び出すことができます。

0

イベントハンドラ1の内部では、イベントハンドラ2が「リスニング」しているイベントを発生させるだけです。イベントハンドラ1の内部には、OnEvent()と入力します。イベントハンドラ2は、イベントを待機するために既に接続されていなければならないことに注意してください。

もっとコードを表示すると、より具体的に話すことができますが、これで十分です。あなたは、次のいずれかを実行する必要があり

0

私の無知。私は他のハンドラの可視性がありませんでした。これは解決するのが簡単な問題です - 私は、ハンドラを2番目のイベントを処理するオブジェクト/フォームに表示させ、他のイベントを起動するのは簡単です。

関連する問題