2013-09-21 61 views
0

我需要從另一種方法protected void Timer1_Tick(object sender, EventArgs e)調用btn_submit_Click(object sender, EventArgs e),通常通過按鈕單擊來調用它。在C#後面的代碼中調用另一種方法的方法

現在在這裏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

就我個人而言,我會採取稍微不同的方法。你實際上並沒有試圖說按鈕被點擊 - 你只是對點擊按鈕感興趣。因此,提取只有相關參數(可能不存在)的第三種方法,並從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 
} 
+0

這是一個好的和成熟的方式 –

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); 
     ... 
} 
相關問題