Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想对一个计时器使用多个按钮来执行不同的操作_C#_Windows Forms Designer - Fatal编程技术网

C# 我想对一个计时器使用多个按钮来执行不同的操作

C# 我想对一个计时器使用多个按钮来执行不同的操作,c#,windows-forms-designer,C#,Windows Forms Designer,我想按下按钮并等待计时器达到0,这样它将粘贴文本框中的任何内容,但我想使用相同的计时器从另一个文本框粘贴另一个按钮 现在,我只通过为每个按钮设置一个计时器来解决这个问题 private void button1_Click(object sender, EventArgs e) { timer1 = new System.Windows.Forms.Timer(); timer1.Tick += new EventHandler(

我想按下按钮并等待计时器达到0,这样它将粘贴文本框中的任何内容,但我想使用相同的计时器从另一个文本框粘贴另一个按钮

现在,我只通过为每个按钮设置一个计时器来解决这个问题

    private void button1_Click(object sender, EventArgs e)
    {
        
        timer1 = new System.Windows.Forms.Timer();
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Interval = 1000;
        timer1.Start();
        label1.Text = counter.ToString();
                     
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        counter--;
        this.label1.Text = counter.ToString();
        if (counter == 0)
        {
            timer1.Stop();
            SendKeys.SendWait(textBox2.ToString());
            counter = 5;
            label1.Text = "5";
        }           
    }

我将编写一个单独的使用async/await的sub,而不是计时器。然后,您可以使用不同的参数从按钮调用它:

private void button1_Click(object sender, EventArgs e)
{
    SendText(button1, label1, textBox1.Text, 5);
}

private void button2_Click(object sender, EventArgs e)
{
    SendText(button2, label2, textBox2.Text, 3);
}

private async void SendText(Button btn, Label lbl, string txt, int seconds)
{
    btn.Enabled = false;
    int counter = seconds;
    while (counter > 0)
    {
        lbl.Text = counter.ToString();
        await Task.Delay(1000);
        counter--;
    }
    lbl.Text = counter.ToString();
    SendKeys.SendWait(txt);
    btn.Enabled = true;
}