从 C# 背后的代码中的另一个方法调用方法

本文关键字:方法 另一个 调用 代码 背后 | 更新日期: 2023-09-27 18:32:10

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

请告诉我一种方法。

从 C# 背后的代码中的另一个方法调用方法

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

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

protected void Timer1_Tick(object sender, EventArgs e)
{
      ....
      btn_submit_Click(sender, e);
      ...
}