我非常瞭解開始的程序員,試圖掌握事件處理的細節。而且我正在爲解決問題而頭痛。見下文:即使處理程序方法中的參數看起來很好,但沒有超載與委託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嗎? –