从C#后面的另一个方法调用一个方法#

时间:2013-09-21 08:04:35

标签: c# asp.net method-call

我需要从另一个方法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();
        }
    }

请建议我这样做。

2 个答案:

答案 0 :(得分:4)

我个人会采取略微不同的方法。你实际上并没有想要点击一个按钮 - 你只是对按钮点击产生的副作用感兴趣。因此,提取仅具有相关参数的第三种方法(可能没有任何参数),并从btn_submit_ClickTimer1_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
}

答案 1 :(得分: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);
      ...
}