我创建了一个自定义确认消息框控件,并创建了一个这样的事件-
[Category("Action")]
[Description("Raised when the user clicks the button(ok)")]
public event EventHandler Submit;
protected virtual void OnSubmit(EventArgs e) {
if (Submit != null)
Submit(this, e);
}
当用户单击确认框上的确定按钮时,事件 OnSubmit 发生。
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
OnSubmit(e);
}
现在我正在像这样动态添加这个 OnSubmit 事件-
在 aspx-
<my:ConfirmMessageBox ID="cfmTest" runat="server" ></my:ConfirmMessageBox>
<asp:Button ID="btnCallMsg" runat="server" onclick="btnCallMsg_Click" />
<asp:TextBox ID="txtResult" runat="server" ></asp:TextBox>
在 CS-
protected void btnCallMsg_Click(object sender, EventArgs e)
{
cfmTest.Submit += cfmTest_Submit;//Dynamically Add Event
cfmTest.ShowConfirm("Are you sure to Save Data?"); //Show Confirm Message using Custom Control Message Box
}
protected void cfmTest_Submit(object sender, EventArgs e)
{
//..Some Code..
//..
txtResult.Text = "User Confirmed";//I set the text to "User Confrimed" but it's not displayed
txtResult.Focus();//I focus the textbox but I got Error
}
我得到的错误是-
System.InvalidOperationException 未被用户代码处理 Message="SetFocus 只能在 PreRender 之前和期间调用。" 来源="系统.Web"
因此,当我动态添加并触发自定义控件的事件时,Web 控件中会出现错误。如果我像这样在 aspx 文件中添加事件,
<my:ConfirmMessageBox ID="cfmTest" runat="server" OnSubmit="cfmTest_Submit"></my:ConfirmMessageBox>
没有错误并且工作正常。
有人可以帮我将事件动态添加到自定义控件吗?
谢谢。