为什么自定义事件需要点击两次按钮才能启动



我有一个自定义事件,用于提醒主页面用户控件上的按钮已被按下。

但是,只需单击两次,主页代码后面的操作就会生效。

用户控件加载在更新面板中

用户控制包括以下

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);
        }
    }

双击事件通常会导致PostBack问题,即不适合Page_Load中的if (!IsPostBack)。我不能100%确定你的是怎么回事,因为我还没有被要求动态加载用户控件。

但我可以提供一个小小的选择;如果你想从用户控件在父页面上激发一个特定的事件,你可以使用这个:

this.Page.GetType().InvokeMember("MyMethodsName", System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { });

相关内容

  • 没有找到相关文章

最新更新