2017-12-06 2 views
-2

私はクリックでメールを送信するボタンを持っていますが、タイマーティックが発生するたびにメールを送信し、チェックボックスを使用してプログラムに5分ごとに送信すると伝えます。 timer2_Tickの内容を実行するには、ifループで何を書き込む必要がありますか?それ以外の場合は、ボタンをクリックしてからメールを送信します。C#フォーム。送信ボタンとチェックボックスの接続方法

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

? 5分ごとに2つのメールを送信しようとしていますか?それとも、すぐに5分タイマーをリセットする必要がありますか? – Enigmativity

+0

別の方法で 'SendMail'機能を持たなければなりません。 'Button_Click'イベントだけでなく、' Timer_Tick'イベントからこのメソッドを呼び出すことができます。ボタンイベントからではなく、 'Checkbox_Changed'イベントからタイマーの起動と停止を検討するかもしれませんが、それはあなた次第です。 –

+0

もう一つの小さな提案: 'wyslijMaila'メソッドを' static'メソッドとすることを考えればよいので、あなたがそれを使いたいときに 'MailHelper'クラスのインスタンスを作る必要はありません。 'MailaPomocnik.WyslijMaila(tbAdresat.Text、tbTemat.Text、tbTresc.Text);' –

答えて

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); 
} 
+1

'Checkbox_Changed'イベントでタイマーの起動と停止をお勧めします。しかし、それは私の好みであり、OPが述べたものではない。 –

+0

@RufusLはい、いい考えです。 – CodingYoshi

+0

ありがとう、それは私が必要としたものです:私も "これ"を使用しようとしていたが、把握できませんでした。ソーリー初心者の質問:)すべての現在はうまく動作します。私はまたあなたが提案したコードを整理しました。 – Mike

2

あなたはあなたがまたEnabledプロパティを介してタイマーを開始し、停止することができます

timer2.Stop(); 

でそれをも停止することができ、タイマー

timer2.Start(); 

を起動する必要があります。

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

+0

これは、CodingYoshiの回答に基づいています。とにかくおかげさまで、私は.NET/C#の初心者です。 – Mike

関連する問題