C#表格。如何连接发送按钮和复选框?

时间:2017-12-06 22:43:38

标签: c# winforms

我有一个按钮,可以在点击时发送邮件,但是我想让它在每次计时器滴答时发送邮件,我使用复选框告诉程序它假设每5分钟发送一次。我应该在if循环中写什么来使它执行timer2_Tick中的内容?其他只需在点击按钮后发送一次邮件。

  private void button2_Click(object sender, EventArgs e)
    {
        if (chbRepeat.Checked)
        {

        }
        else
        {
            MailHelper zmienna = new MailHelper();
            zmienna.wyslijMaila(tbAdresat.Text, tbTemat.Text, tbTresc.Text);
        }

    }

    private void chbRepeat_CheckedChanged(object sender, EventArgs e)
    {
        MailHelper zmienna = new MailHelper();
        zmienna.wyslijMaila(tbAdresat.Text, tbTemat.Text, tbTresc.Text);
    }

    private void timer2_Tick(object sender, EventArgs e)
    {

        MailHelper zmienna = new MailHelper();
        zmienna.wyslijMaila(tbAdresat.Text, tbTemat.Text, tbTresc.Text);
    }
}

2 个答案:

答案 0 :(得分:2)

您需要启动计时器

timer2.Start();

你也可以用

来阻止它
timer2.Stop();

您还可以通过Enabled属性启动和停止计时器。

private void chbRepeat_CheckedChanged(object sender, EventArgs e)
{
    // This automatically starts the timer when you check the check-box and
    // stops it when you un-check the ckeck box.
    timer2.Enabled = chbRepeat.Checked;
}

don't repeat yourself (DRY) 原则说您不应该多次编写相同的代码。这增强了代码的可维护性,可测试性和可读性。你写了3次发送邮件代码。将此代码解压缩为新方法。

请参阅:Timer Class

答案 1 :(得分:2)

您需要做的就是启动计时器。

this.timer2.Start();

但是,您也可以清理代码,使其最终看起来像这样:

private void button2_Click(object sender, EventArgs e)
{
    if (chbRepeat.Checked)
    {
        this.timer2.Start();
    }
    else
    {
        this.timer2.Stop();
        this.SendMail();
    }
}

private void timer2_Tick(object sender, EventArgs e)
{
    this.SendMail();
}

private void SendMail()
{
    MailHelper zmienna = new MailHelper();
    zmienna.wyslijMaila(tbAdresat.Text, tbTemat.Text, tbTresc.Text);
}