カスタム確認メッセージ ボックス コントロールを作成し、次のようなイベントを作成しました。
[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 は、ユーザーが確認ボックスの [OK] ボタンをクリックすると発生します。
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
OnSubmit(e);
}
今、私はこのOnSubmitイベントをこのように動的に追加しています
-In 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 was unhandled by user code Message="SetFocus can only call before and during PreRender." です。ソース="System.Web"
そのため、カスタム コントロールのイベントを動的に追加して起動すると、Web コントロールでエラーが発生します。このようにaspxファイルにイベントを追加すると、
<my:ConfirmMessageBox ID="cfmTest" runat="server" OnSubmit="cfmTest_Submit"></my:ConfirmMessageBox>
エラーは発生せず、正常に動作します。
イベントをカスタム コントロールに動的に追加するのを手伝ってくれる人はいますか?
ありがとう。