タイマーのサンプル

Windowsフォームアプリケーションで、タイマーのプログラムを作成してみましょう

ここでは、VisualStudioを使って、簡単なアプリケーションを作ったことがある方を対象にしています

次のようなデザインを作成します

timer1のIntervalプロパティを 100(ms) から 1000(ms) にします。これにより、1秒ごとにタイマーイベントを発生させることができます

デザイン画面のbutton1 をダブルクリックして、ボタンクリックイベントを作成します。

タイマーイベントを、イネーブル(有効)にするコードを記述します。これによって、タイマーがスタートします

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TimerSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }
    }
}

デザイン画面のtimer1 をダブルクリックして、タイマーイベントを作成します。

タイマーイベントが発呼された時の処理を追記します

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TimerSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text += "●";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }
    }
}

実行してみて、動作を確認します。

button1をクリックして、1秒ごとに●が増えていくのを確認しましょう

コードだけで実現する場合

サンプルとして、timer2を作成しています。(timer1のコードは省略しています)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TimerSample
{
    public partial class Form1 : Form
    {
        Timer timer2  = new Timer();

        public Form1()
        {
            InitializeComponent();

            timer2.Interval = 1000;
            // AddTimerIcon;の入力後、インテリセンスでメソッド作成を選択することで、メソッド作成の支援を受けることができます
            timer2.Tick += AddTimerIcon;
        }

        private void AddTimerIcon(object sender, EventArgs e)
        {
            label1.Text += "●";
        }

        // button1が押されると、timer2がスタート
        private void button1_Click(object sender, EventArgs e)
        {
            timer2.Enabled = true;
        }
    }
}

無名(匿名)メソッドに置き換えた場合(ラムダ式)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TimerSample
{
    public partial class Form1 : Form
    {
        Timer timer2  = new Timer();
        public Form1()
        {
            InitializeComponent();

            timer2.Interval = 1000;
            timer2.Tick += (object sender, EventArgs e) =>
            {
                label1.Text += "●";
            };

            // ブロック内が1行の場合、次のように省略することもできます
            // timer2.Tick += (object sender, EventArgs e) => label1.Text += "●";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer2.Enabled = true;
        }
    }
}

参考

WindowsFormアプリ

Posted by hidepon