我有一个按钮,可以在点击时发送邮件,但是我想让它在每次计时器滴答时发送邮件,我使用复选框告诉程序它假设每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);
}
}
答案 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);
}