我有一个自定义事件,用于警告主页面已在用户控件上按下按钮。
但是,主页面代码中的操作需要两次单击才能生效。
用户控件在更新面板中加载
用户控件包括以下内容
public static event EventHandler SignOut;
protected void profileSignOut_Click(object sender, EventArgs e)
{
if (SignOut != null)
SignOut(this, EventArgs.Empty);
}
主页面包含以下内容
protected void Page_Load(object sender, EventArgs e)
{
Views.Profile.SignOut += Profile_SignOut;
LoadUserControl();
}
private void Profile_SignOut(object sender, EventArgs e)
{
MenuButtons.Visible = true;
LastLoadedControl = null;
LoadUserControl();
}
只是为了完整性,加载用户控件部分也在default.aspx
中private string LastLoadedControl
{
get
{
return ViewState["LastLoaded"] as string;
}
set
{
ViewState["LastLoaded"] = value;
}
}
private void LoadUserControl()
{
string controlPath = LastLoadedControl;
ContentPlaceholder.Controls.Clear();
if (!string.IsNullOrEmpty(controlPath))
{
UserControl uc = (UserControl)LoadControl(controlPath);
ContentPlaceholder.Controls.Add(uc);
}
}
答案 0 :(得分:0)
双击事件通常归结为PostBack问题,即不适合if (!IsPostBack)
中的Page_Load
。我不能100%确定你的用途是什么,因为我还没有被要求动态加载用户控件。
但我可以提供一个轻微的选择;如果您想要从用户控件中触发父页面上的特定事件,可以使用以下命令:
this.Page.GetType().InvokeMember("MyMethodsName", System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { });