タイマーのサンプル(フォームデザインを使わずにコードで作成)
ボタンを1つだけで練習(フォームへの配置を自作コードで実施)
実行結果
ベースとなるコード
このコードは、Windowsフォームアプリケーションで、タイマーを使用して定期的にイベントを発生させ、ボタンをクリックすることでタイマーを開始するサンプルコードです。
具体的には、Form1クラスを定義し、タイマーとボタンのインスタンスを生成しています。タイマーの間隔は1秒に設定され、Tickイベントでbutton1のテキストに「●」を追加するように設定されています。また、button1のクリックイベントでタイマーを開始するように設定されています。
このコードは、Visual Studioなどの開発環境で実行することで、Windowsフォームアプリケーションとして動作することができます。
using System;
using System.Windows.Forms;
namespace TimerSampleNetFramework
{
public partial class Form1 : Form
{
Timer timer1;
Button button1;
public Form1()
{
InitializeComponent();
timer1 = new Timer();
timer1.Interval = 1000;
timer1.Tick += new EventHandler(timer1_Tick);
button1 = new Button();
button1.Parent = this;
button1.Click += new EventHandler(button1_Click);
}
private void timer1_Tick(object sender, EventArgs e)
{
button1.Text += "●";
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
}
}
イベント登録コードの更新
更新箇所
timer1.Tick += new EventHandler(timer1_Tick);
は、次のように略することができます
timer1.Tick += timer1_Tick;
まとめたコード
using System;
using System.Windows.Forms;
namespace TimerSampleNetFramework
{
public partial class Form1 : Form
{
Timer timer1;
Button button1;
public Form1()
{
InitializeComponent();
timer1 = new Timer();
timer1.Interval = 1000;
timer1.Tick += timer1_Tick;
button1 = new Button();
button1.Parent = this;
button1.Click += button1_Click;
}
private void timer1_Tick(object sender, EventArgs e)
{
button1.Text += "●";
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
}
}
コードの整理をしてみる
上記コードで十分ですが、学習のためさらにまとめてみましょう
timer1.Tickのイベント登録方法を更新
ビデオを確認しながら次のように更新してみましょう
イベントが1分で完結する場合は、{}の省略もできます
もちろん、行が増えたときに{}で複数行に戻すこともできます
using System;
using System.Windows.Forms;
namespace TimerSampleNetFramework
{
public partial class Form1 : Form
{
Timer timer1;
Button button1;
public Form1()
{
InitializeComponent();
timer1 = new Timer();
timer1.Interval = 1000;
timer1.Tick += (sender, e) => button1.Text += "●";
button1 = new Button();
button1.Parent = this;
button1.Click += button1_Click;
}
private void timer1_Tick(object sender, EventArgs e)
{
button1.Text += "●";
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
}
}
button1のクリックイベントも整理してみます
using System;
using System.Windows.Forms;
namespace TimerSampleNetFramework
{
public partial class Form1 : Form
{
Timer timer1;
Button button1;
public Form1()
{
InitializeComponent();
timer1 = new Timer();
timer1.Interval = 1000;
timer1.Tick += (sender, e) => button1.Text += "●";
button1 = new Button();
button1.Parent = this;
button1.Click += (sender, e) => timer1.Enabled = true;
}
}
}
このコードは、Windows フォームアプリケーションを作成し、ボタンをクリックすることで1秒ごとにボタンのテキストに円を追加するタイマーを作成しています。
具体的には、Timer
クラスのインスタンスを作成し、そのインターバルを1秒に設定しています。そして、タイマーの Tick
イベントに、ラムダ式で定義されたボタンのテキストに円を追加する処理を登録しています。
また、Button
クラスのインスタンスを作成し、親としてこのフォームを設定しています。そして、ボタンがクリックされたときに、タイマーを有効にする処理を登録しています。
このコードは、C#言語の .NET Framework を使用していることに注意してください。using
ステートメントによって System
と System.Windows.Forms
の名前空間がインポートされているため、これらのクラスを直接使用することができます。
ラムダ式が採用されたので、今は使う機会が減ってラムダ式に置き換えられるようになりましたが、昔は、匿名(無名)関数の役割としてデリゲート(delegate)が使われていました
サンプル1
timer1.Tick += delegate (object sender, EventArgs e)
{
button1.Text += "●";
};
サンプル2
timer1.Tick += delegate
{
button1.Text += "●";
};
どちらの方法でも、ラムダ式と同様に、Tick
イベントが発生するたびにbutton1
のテキストに●
を追加することができます。
ディスカッション
コメント一覧
まだ、コメントがありません