タイマ割り込みでカウントする

ToolBox から Timer を貼り付けて、タイマ割り込みでカウントします。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 空のプロジェクトから Form を作成して下さい。
    詳細は Form を作成する を参照して下さい。
    自動生成のプロジェクトでも同じ要領です。
  2. [デザイン] を表示して、[ツールボックス] から [Timer] をフォームに貼り付けます。
    Timer を貼り付けるソースコード「InitializeComponent()」がファイルに追加されます。
  3. Timer のプロパティウインドウの [イベント] ボタンをクリックして [Tick] を表示します。
  4. [Tick] の右にあるコンボ ボックスに「timer1_Tick」と入力して [Enter] キーを押します。
  5. プログラムファイルにイベントメソッドが追加されます。
    ここにカウンタをアップするコードを記述します。
    Invalidate() でウインドウを再描画するために Paint メソッドを呼び出します。
        private void timer1_Tick(object sender, EventArgs e)
        {
            CNT++;
            Invalidate();
        }
        
  6. カウンタの領域を MyForm の始めに定義します。
    Timer が定義されている前後ぐらいに追加して下さい。
        private Timer timer1;
        private System.ComponentModel.IContainer components;
        int CNT;
        
  7. MyForm の Constructor から InitializeComponent() を呼び出して下さい。
    続いてウインドウを描画する MyHandler メソッドを設定します。
    カウンタをゼロでクリアして、timer1.Start() でタイマを起動します。
    インターバルは、規定値として 100 ミリ秒に設定されています。
        public MyForm()
        {
            InitializeComponent();
            Paint += new PaintEventHandler(MyHandler);
            CNT = 0;
            timer1.Start();
        }
        
  8. カウンタを表示する MyHandler メソッドです。
    詳細は C#と表示する を参照して下さい。
    カウンタ(CNT) の値を String に変換して表示しています。
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Font f = new Font("MS明朝", 80);
            g.DrawString(Convert.ToString(CNT), f, Brushes.Red, new PointF(10F, 50F));
        }
        
  9. プログラムを起動するとカウンタが表示されて、タイマ割り込みで自動的にカウントアップされます。
  10. 完成したプログラム(Timer.cs)です。
    CLI の環境で実行すれば「ソースプログラム一本」だけで動きます。
    /**********************************************/
    /*★ Form にタイマーを張り付ける    前田 稔 ★*/
    /**********************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        private Timer timer1;
        private System.ComponentModel.IContainer components;
        int CNT;
    
        public MyForm()
        {
            InitializeComponent();
            Paint += new PaintEventHandler(MyHandler);
            CNT = 0;
            timer1.Start();
        }
    
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.timer1 = new System.Windows.Forms.Timer(this.components);
            this.SuspendLayout();
            // 
            // timer1
            // 
            this.timer1.Interval = 500;
            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
            // 
            // MyForm
            // 
            this.ClientSize = new System.Drawing.Size(292, 260);
            this.Name = "MyForm";
            this.ResumeLayout(false);
    
        }
    
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Font f = new Font("MS明朝", 80);
            g.DrawString(Convert.ToString(CNT), f, Brushes.Red, new PointF(10F, 50F));
        }
    
        private void timer1_Tick(object sender, EventArgs e)
        {
            CNT++;
            Invalidate();
        }
    }
    
    class form01
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    

【演習】

  1. 自動的に作成された InitializeComponent() メソッドの内容を確認して下さい。
  2. 設定されている幾つかの値を変更して、その意味を理解して下さい。

超初心者のプログラム入門(C# Frame Work)