简体   繁体   English

C#中如何使用定时器点击按钮

[英]How to use timer to click buttons in C#

How to use timers to trigger click button event every 3 seconds?如何使用计时器每 3 秒触发一次点击按钮事件?

I'm trying to rotate 2 pictures in pictureboxes by triggering the rotate button automaticly using timer but it seems doesnt works.我试图通过使用计时器自动触发旋转按钮来旋转图片框中的 2 张图片,但它似乎不起作用。 I never used timer before so this is my first time.我以前从未使用过计时器,所以这是我第一次使用。 Anyone know whats wrong with my code or any other code suggestion for it?任何人都知道我的代码或任何其他代码建议有什么问题? Thanks谢谢

Code I'm using我正在使用的代码

        private void timer1_Tick(object sender, EventArgs e)
        {
            rotateRightButton_Click(null, null);
            pictureBox1.Refresh();
            pictureBox2.Refresh();
        }
        private void timerStartButton_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
        private void timerStopButton_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }

It's even possible (and more simple) with tasks甚至可以(并且更简单)使用任务

public partial class Form1 : Form
{
    // variable to keep track if the timer is running.
    private bool _timerRunning;

    public Form1()
    {
        InitializeComponent();
    }

    private async Task StartTimer()
    {
        // set it to true
        _timerRunning = true;

        while (_timerRunning)
        {
            // call the rotateRightButton_Click (what you want)
            rotateRightButton_Click(this, EventArgs.Empty);
            pictureBox1.Refresh();
            pictureBox2.Refresh();
            // wait for 3 seconds (but don't block the GUI thread)
            await Task.Delay(3000);
        }
    }

    private void rotateRightButton_Click(Form1 form1, EventArgs empty)
    {
       // do your thing
    }

    private async void buttonStart_Click(object sender, EventArgs e)
    {
        // if it's already started, don't start it again.
        if (_timerRunning)
            return;

        // start it.
        await StartTimer();
    }

    private void buttonStop_Click(object sender, EventArgs e)
    {
        // stop it.
        _timerRunning = false;
    }
}
timer1.Interval = 3000; // set interval to 3 seconds and then call Time Elapsed event

timer1.Elapsed += Time_Elapsed;


//Event
private void Time_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
       // will be triggered in every 3 seconds
        rotateRightButton_Click(null, null);
        pictureBox1.Refresh();
        pictureBox2.Refresh();
 }

Hope this helps!希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM