我想把一个事件称为另一个事件......我们可以做这个任务......
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
DetailsView1.ChangeMode(e.NewMode);
DetailsView1.DataSource = GetDetails.GetEmpDetailsById(Convert.ToInt32(Session["empId"]));
DetailsView1.DataBind();
}
protected void btnEdit_Click(object sender, EventArgs e)
{
}
我只想将DetailsView1_ModeChanging
事件称为btnEdit_Click
,就像下面的
protected void btnEdit_Click(object sender, EventArgs e)
{
DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e);
}
如果有可能,则可以通过发件人和e
答案 0 :(得分:2)
简单地写下您的事件名称和paas发件人,就像这样
DetailsView1_ModeChanging(发件人,E);
答案 1 :(得分:1)
您应该将逻辑从DetailsView1_ModeChanging
提取到另一种方法,例如
private void ChangeDataSourceMode(DetailsViewMode newMode) {
DetailsView1.ChangeMode(newMode);
DetailsView1.DataSource = GetDetails.GetEmpDetailsById(Convert.ToInt32(Session["empId"]));
DetailsView1.DataBind();
}
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e) {
ChangeDataSourceMode(e.NewMode);
}
protected void btnEdit_Click(object sender, EventArgs e) {
ChangeDataSourceMode(DetailsViewMode.Edit);
}
将逻辑放入事件处理程序通常不是一种好的形式,特别是如果您计划稍后重用该功能,因为它限制您只在一个地方使用逻辑。
答案 2 :(得分:0)
我建议将DetailsView1_ModeChanging
中存在的逻辑重构为私有方法,并从两个事件处理程序中调用新方法。
答案 3 :(得分:0)
不要那样做。将您的事件代码提取到新方法中并调用它。
private void SetDetailsViewSource(DetailsViewMode mode)
{
DetailsView1.ChangeMode(mode);
DetailsView1.DataSource = GetDetails.GetEmpDetailsById(Convert.ToInt32(Session["empId"]));
DetailsView1.DataBind();
}
然后adn从两个事件中调用它:
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
SetDetailsViewSource(e.NewMode);
}
protected void btnEdit_Click(object sender, EventArgs e)
{
SetDetailsViewSource(DetailsViewMode.ReadOnly);
}
通过这种方式,您可以更清楚地了解代码中发生了什么。隐含地调用事件是一个坏主意。