我的事件处理程序(c#)有问题
本文关键字:有问题 事件处理 程序 我的 | 更新日期: 2023-09-27 17:58:35
此代码来自一个类
Button pagebtn = new Button();
pagebtn.Text = "2";
pagebtn.Click +=
listTopicPerPage_Click(this, new btnEventArgs() { btnNumber = 2 });
我在eventHandler方法上得到一个下划线,上面写着。。
不能简单地转换类型"void"到"系统"。EventHandler"
为什么?
来自我创建的另一个类的代码:
class btnEventArgs : EventArgs
{
public int btnNumber { get; set; }
}
要指定事件参数,您应该在类中创建一个事件字段,并根据需要将其提升:
public partial class WebForm1 : System.Web.UI.Page
{
public event EventHandler<btnEventArgs> SampleEvent;
public void DemoEvent(int val)
{
// Copy to a temporary variable to be thread-safe.
EventHandler<btnEventArgs> temp = SampleEvent;
if (temp != null)
temp(this, new btnEventArgs { btnNumber = val });
}
protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += new EventHandler(Button1_Click);
}
void Button1_Click(object sender, EventArgs e)
{
DemoEvent(2);
}
}
class btnEventArgs : EventArgs
{
public int btnNumber { get; set; }
}
MSDN文章
试试这个:
pagebtn.Click += new EventHandler(listTopicPerPage_Click);
protected void listTopicPerPage_Click( object sender, EventArgs e )
,你可以在这里做几件事
您可以更新方法签名以使用btnEventArgs而不是EventArgs
protected void listTopicPerPage_Click( object sender, btnEventArgs e )
或者,您可以将新的btnEventArgs强制转换为EventArgs,然后在方法体中将其强制转换回btnEventArgs。
pagebtn.Click +=
listTopicPerPage_Click(this, (EventArgs) new btnEventArgs() { btnNumber = 2 });
protected void listTopicPerPage_Click( object sender, EventArgs e )
{
btnEventArgs bea = (btnEventArgs) e;
...
}
编辑
pagebtn.Click += listTopicPerPage_Click;