2011-12-14 9 views
3

私は別のクラスでイベントを登録しようとしているクラスを持っています。別のクラスからマウスイベントを登録するには

以下に示すように、私はメソッドを持つクラスAでは:

public void Mouse_Down(object sender, MouseEventArgs e) 
     { 

     } 

私はそうのようなクラスBにイベントを登録しています:

  ClassA classA = new ClassA(); 
      classA.MouseDown += new MouseEventHandler(classA.Mouse_Down); 

クリック何も起こっていないとき。誰でも問題が何であるか知っていますか?

あなたはClassAのイベントではなく、ClassB年代のイベントを登録している:あなたはClassBによって発生したイベントを処理したいと仮定すると、

+0

'Mouse_Down'メソッドでブレークポイントを設定しようとしましたか? –

+0

2番目のコードスニペットの2番目の行に質問に誤字があるように見えますが、最初にclassAではなく** this **キーワードを使用したい場合がありますか? – Maheep

+0

はい私は持っています。それは決してその方法に入っていない。何か案は? –

答えて

0

イベントトリガーコード(classA)でブレークポイントを設定し、EventHandlersコレクションを確認してください。私は誰も登録されておらず、あなたはclassAのインスタンスを乱していると確信しています。

ブレークポイントが決して得られない可能性もあります。つまり、イベントは発生しません。

とにかくあなたがやりたいことは、私のために少し奇妙に見えます。

編集:

あなたは(。元にClassAのコンストラクタから)「通常の方法で」同じイベントに異なる方法を登録しようとしたことがありますか?イベントトリガーコードにアクセスできない場合は、イベントが発生した時点で、登録されているハンドラーが適切かどうかを確認する最善の方法です。

1

。あなたがクラスBからやっているという事実は何も意味しません。あなたはClassAによって発生したイベントを処理したいと仮定すると、


一つの可能​​性はClassAの別のインスタンスがイベントの1が処理され、イベントがないトリガーされていることです。

ClassA classA = new ClassA(); 

上記は、classAの新しいインスタンスを作成します。イベントを発生させるのがこのイベントでない場合、メソッドを呼び出すことはできません。

関連する問題