在给动态创建控件添加事件时容易遇到的一个错误就是:XXX事件的重载均与委托"System.EventHandler"不匹配。
假设控件是MovePicBox,使用如下代码添加KeyPress事件,会报不匹配的错。
MovePicBox.KeyPress += new EventHandler(MovePicBox_KeyPress);
private void MovePicBox_KeyPress(object sender, System.EventArgs e)
{
}
问题在哪呢?EventHandler与事件的参数不匹配。
当事件是KeyPress时,事件对应的委托是KeyPressEventHandler,参数是KeyPressEventArgs。
MovePicBox.KeyPress += new KeyPressEventHandler(MovePicBox_KeyPress);
private void MovePicBox_KeyPress(object sender, System.KeyPressEventArgs e)
{
}
因此,给控件添加事件时要注意以下三者匹配:
事件名称--事件对应的委托--事件函数的参数