0

任何人都可以帮助我在 Windows 窗体 C3 应用程序中停止我的计时器吗?我使用设计器在表单中添加了计时器,间隔设置为 1000;我想在按钮单击后等待 5 秒后执行一些操作。请检查代码并告诉我。现在的问题是我无限地得到 MessageBox2 并且永远不会让计时器停止。

static int count;

public Form1()
        {
            InitializeComponent(); 
            timer1.Tick += timer1_Tick;
        }
public void button1_Click(object sender, EventArgs e)
        {

        timer1.Enabled = true;

        while(count>5)
         {
          ....dosome actions...
         }

        }
private void timer1_Tick(object sender, EventArgs e)
        {
            count1++;
           MessageBox.Show("Messagebox2");
           if (count1 == 5)
           {
               //timer1.Enabled = false; timer1.Stop(); 
               ((System.Timers.Timer)sender).Enabled = false;
               MessageBox.Show("stopping timer");
           }
        }
4

3 回答 3

2

我会渲染count无用的,只使用该timer 1 interval属性并将您的操作放入timer1_Tick事件中。

  public void button1_Click(object sender, EventArgs e)
    {
          timer1.Interval = 5000;
          timer1.Enabled = true;
    }

   private void timer1_Tick(object sender, EventArgs e)
   {
        timer1.Enabled = false;  
        MessageBox.Show("stopping timer");
        // Your other actions here
   }
于 2012-06-09T13:18:39.970 回答
0

你用哪个定时器?因为 C# 支持来自两个不同命名空间的类 Timer。一个来自 Forms,另一个来自 System.Timers。我建议您使用另一个 - System.Timers.Timer。

                Timer t = new Timer(20000); // created with 20seconds
            t.Enabled = true; // enables firing Elapsed event
            t.Elapsed += (s, e) => {
                \\do stuff
            };

            t.Start();

在这个简短的代码中,您可以看到如何创建和启用计时器。通过注册 Elapsed 事件,您可以明确说明时间过去后要做什么。这仅完成一次。当然,如果用户在达到限制之前单击按钮,则需要进行一些更改。但这在很大程度上取决于您要求的操作的行为。

于 2012-06-09T13:51:32.870 回答
0

您正在递增count1和检查count.

while(count1 > 5)
{
    ...dosome actions...
}
于 2012-06-09T13:19:14.910 回答