使计时器执行bidder00_TextChanged事件

时间:2013-01-21 14:18:34

标签: c# winforms timer textchanged

我正在试图弄清楚当我的timer滴答时,它会执行bidder00_TextChanged或类似的事情。

这甚至可以吗?如果不是,还有其他办法吗? 我试图搜索谷歌,但我没有得到任何结果,如果你发现我错过了什么,请在这里发布。

我真的没有任何代码,但现在是:

private void bidder00_TextChanged(object sender, EventArgs e)
{
    if (bidder00.Text == addbidder1.Text)
    {
        bidBtn1.PerformClick();
    }
}

这是我的TextChanged事件

我的timer没有任何代码,因为它将执行bidder00_TextChanged事件。

2 个答案:

答案 0 :(得分:3)

您可以创建方法Perform()并在事件处理程序中调用它:

private void timer1_Tick(object sender, EventArgs e)
{
   Perform();
}

private void bidder00_TextChanged(object sender, EventArgs e)
{
   Perform();
}

private void Perform()
{
   if (bidder00.Text == addbidder1.Text)
   {
      bidBtn1.PerformClick();
   }
}

答案 1 :(得分:1)

我认为您已将实际逻辑与click事件相结合,这不是一个好主意。将代码分离出一个单独的函数,并让应用程序的两个部分调用相同的代码,例如。

private void SubmitBid()
{
    // code you want to execute
}

private void OnSubmitBid()
{
     // confirm whether we can actually submit the bid
     if (bidder00.Text == addbidder1.Text)
     {
          SubmitBid();
     }
}

private void Timer1_OnTick(object sender, EventArgs e)
{
    // trigger code from timer
    OnSubmitBid();
}

private void bidder00_TextChanged(object sender, EventArgs e)
{
    // trigger code from text change
    OnSubmitBid();
}

private void btnBid_Click(object sender, EventArgs e)
{
    // trigger code from button press
    OnSubmitBid();
}

请注意,所有UI控件都会触发相同的代码。在那里有一个额外的调用用于文本控制验证(即OnSubmitBid()) - 如果不需要,那么你只需直接调用SubmitBid