此代码来自一个类
Button pagebtn = new Button();
pagebtn.Text = "2";
pagebtn.Click +=
listTopicPerPage_Click(this, new btnEventArgs() { btnNumber = 2 });
我在eventHandler方法上有一个下划线说..
无法隐式转换类型'void' 到'System.EventHandler'。
为什么?
我创建的其他类的代码:
class btnEventArgs : EventArgs
{
public int btnNumber { get; set; }
}
答案 0 :(得分:2)
要指定事件参数,您应该在班级中创建一个事件字段,并按需提升:
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; }
}
答案 1 :(得分:0)
试试这个:
pagebtn.Click += new EventHandler(listTopicPerPage_Click);
答案 2 :(得分:0)
修改强>
pagebtn.Click += listTopicPerPage_Click;
答案 3 :(得分:0)
这是因为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;
...
}