私は非常に初心者で、イベントハンドリングの詳細を把握しようとしています。そして、私は頭を悩ませている。以下を参照してください:ハンドラメソッドの引数がうまくいくように見えますが、デリゲートのEventHandlerに一致するオーバーロードはありません
public class Knop_ClickEventArgs : System.EventArgs
{
//Here comes code that still needs to be written.
}
static void Knop_Click(object sender, Knop_ClickEventArgs e)
{
Canvas canvas = new Canvas();
Application.Run(canvas);
}
public PromptScherm()
{
//Deleted some code here that is most likely uninteresting
Button Knop = new Button();
// Deleted uninteresting code here as well
this.Controls.Add(Knop);
Knop.Click += Knop_Click;
}
このコード(短縮)作品はCS0123
エラーを与え、私のKnop_Click
方法は、デリゲートEventHandler
と一致しないことを記述する。
問題がKnop_ClickEventArgs
であることがわかりました。それをSystem.EventArgs
と置き換えるとうまくいきます。しかし、Knop_ClickEventArgs
という定義では、それがSystem.EventArgs
の特定のインスタンスであることを指定しているので、それはなぜ問題を引き起こすのだろうと私に困惑しますか?
'Click'ハンドラはすべての可能な' EventArgs'を処理できるはずですが、 'Knop_Click'は' Knop_ClickEventArgs'しか処理できません。 – PetSerAl
EventArgsインスタンスを暗黙的にKnop_ClickEventArgsに変換することはできません。おそらく、あなたはボタンを継承し、カスタムイベント引数サポートのためにクリックをオーバーライドする必要があります。詳細についてはhttps://stackoverflow.com/questions/4815629/how-do-i-pass-variables-to-a-buttons-event-methodを参照してください – ingvar
あなたはwinformsを使用していますか? –