0

我需要从通常通过单击按钮调用btn_submit_Click(object sender, EventArgs e)的另一种方法调用。protected void Timer1_Tick(object sender, EventArgs e)

现在在这里Timer1_Tick比较一个时间,如果当前时间超过,我需要btn_submit_Click(object sender, EventArgs e)自动调用。

  protected void Timer1_Tick(object sender, EventArgs e)
    {
        DateTime et = DateTime.Parse(Session["endtime"].ToString());

        if (DateTime.Now.TimeOfDay >= et.TimeOfDay)
        {
           // btn_submit_Click();
            Response.Redirect("Welcome.aspx");

        }
        else
        {
            Label1.Text = DateTime.Now.ToLongTimeString();
        }
    }

请建议我一种方法来做到这一点。

4

2 回答 2

4

我个人会采取稍微不同的方法。您实际上并不是要说单击了按钮-您只是对与单击按钮相同的副作用感兴趣。因此,提取仅具有相关参数(可能没有任何参数)的第三种方法,并从 和 中调用该btn_submit_Click方法Timer1_Tick。这样你就不必想出一个没有发生的按钮点击senderEventArgs例如:

protected void btn_submit_Click(object sender, EventArgs e)
{
    // Maybe validation?
    Submit();
}

protected void Timer1_Tick(object sender, EventArgs e)
{
    DateTime et = DateTime.Parse(Session["endtime"].ToString());

    if (DateTime.Now.TimeOfDay >= et.TimeOfDay)
    {
        Submit();
        Response.Redirect("Welcome.aspx");
    }
    else
    {
        Label1.Text = DateTime.Now.ToLongTimeString();
    }
}

private void Submit()
{
    // Common code to execute on either the timer tick or button click
}
于 2013-09-21T08:07:30.473 回答
2

Jon Skeet 提到了正确的方法。将您的代码重构btn_submit_click为一个可以由 Button 和 Timer 调用的中心方法。但你仍然可以做submit_click(sender, e)

protected void Timer1_Tick(object sender, EventArgs e)
{
      ....
      btn_submit_Click(sender, e);
      ...
}
于 2013-09-21T08:13:34.523 回答