WindowsFormsでタイマーを作ろう。
乱数調整には欠かせないのがカウントダウンタイマーです。既に世の中には乱数調整向けのタイマーがいくつも公開されていますが、いつ公開が終了するかもわかりません。自分でタイマーを作れるようになっておいた方が嬉しいですよね!
…ということで、タイマーを作るサンプルを用意してみました。
1. 画面を作る
VisualStudioを起動し、新規プロジェクトを立ち上げて、左側にある『ツールボックス』の『コモンコントロール』からLabelとButtonを選んでぺたぺたしましょう。
同じく『ツールボックス』の『コンポーネント』からTimerを選び、適当な場所にぺたぺたしましょう。
TimerのIntervalを1000(1000ミリ秒=1秒)に設定しておきます。
https://scrapbox.io/files/61b0c2daf7ee14001db1d012.PNG
画像ではボタンの文字列も変えてあります。
2. コードを書く
画面に置いたbutton1をダブルクリックするとコード画面が開き、button1_Clickイベントが自動で作られています。ボタンが押されたときにここの処理が呼ばれます。
同様にtimer1もダブルクリックしてtimer1_Tickを生成します。
えいえいっとコードを書くと、タイマーができます。
code: timer.cs
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 CSTimer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// label1の文字列を初期化しておきます。
// 見栄えだけの問題です。
label1.Text = $"{counter}";
}
// タイマーの値。
private int counter;
// ボタンを押したときに発生するイベント。
private void button1_Click(object sender, EventArgs e)
{
// タイマーの値を初期化。
counter = 10;
// タイマー表示を初期化。
label1.Text = $"{counter}";
// タイマーを起動する。
timer1.Start();
// 多重起動されると困るのでボタンを押せないようにしておく。
button1.Enabled = false;
}
// タイマー開始後に1秒ごとに発生するイベント。
private void timer1_Tick(object sender, EventArgs e)
{
// カウントダウンする。
counter--;
// 表示も更新する。
label1.Text = $"{counter}";
// タイマー終了時
if (counter == 0)
{
// タイマーを止める。
timer1.Stop();
// ボタンを押せるようにする。
button1.Enabled = true;
}
}
}
}
動作確認
https://scrapbox.io/files/61b0c73c0e28a9001f315d86.mp4
最後に
いかがでしたでしょうか?
これでもう闇の組織によってタイマー開発者の家族が人質に取られて公開を停止させられても大丈夫ですね!
さて、アドベントカレンダー明日の担当は…まだ埋まっていませんね。どなたでも大歓迎です! お待ちしております!自分で埋めました。というか初めからそのつもりでした、ごめんなさい…。