【发布时间】:2021-11-09 21:25:54
【问题描述】:
我的行为不一致。我需要更改用户控件的按钮 Click 事件。我有两个按钮,我对控件所做的所有更改都可以正常工作,但是只有一个 Click 事件不会更改:
((Button)EntryControl.FindControl("CancelConfirmation").FindControl("btnYesCancel")).Click += new EventHandler(btnYesCancelTrade_Click);
所有其他更改都可以正常工作:
protected void Page_Load(object sender, EventArgs e)
{
((Label)EntryControl.FindControl("lbPurchaseDate")).Visible = false;
((TextBox)EntryControl.FindControl("txPurchaseDate")).Visible = false;
((Label)EntryControl.FindControl("lbPurchasePrice")).Visible = false;
((TextBox)EntryControl.FindControl("txPurchasePrice")).Visible = false;
((Button)EntryControl.FindControl("CancelConfirmation").FindControl("btnNoCancel")).Click += new EventHandler(btnNoCancelTrade_Click);
/*does not work*/ ((Button)EntryControl.FindControl("CancelConfirmation").FindControl("btnYesCancel")).Click += new EventHandler(btnYesCancelTrade_Click);
((Button)EntryControl.FindControl("CancelConfirmation").FindControl("btnYesCancel")).Text = "Yes Test";
}
我错过了什么吗?
【问题讨论】:
-
这是动态添加的按钮吗?还是它是标记 (aspx.cs) 的一部分?
-
控件是通过标记设置的。我在应用程序的不同区域重用控件,我需要使用不同的处理程序,所以在 webform page_load 中我正在进行更改,奇怪的是,另一个按钮在我更改后工作正常, 与按钮的设置方式相同,即使 Text 发生了更改,也不会更改 Click 处理程序。
-
没关系,在注册新的处理程序之前,我必须取消注册原始处理程序。所以我在控件中创建了几个方法,这样 Web 表单就可以做到这一点:
-
public void deregisterBtnYesCancel_Click() { btnYesCancel.Click -= btnYesCancel_Click; } public void deregisterBtnNoCancel_Click() { btnNoCancel.Click -= btnNoCancel_Click; }
标签: asp.net button click eventhandler