Winフォームアプリで、カウンター表示付きボタンコントロールの自作
オブジェクト指向の考え方の練習シリーズです
標準コントロールのButtonを継承して、インスタンスを作成することでオブジェクト指向のメリットをみていきましょう
コントロールの自作について、次の内容を事前に確認しておきましょう
上記を参考にButtonクラスを拡張して自作のクラスを作ってみます
オブジェクト指向言語では、このように元となるクラス(基底クラス)を拡張してクラスを作ることを継承と呼びます
どのような機能を持たせるか?
ボタンをクリックするとカウントがアップ(カウンタの値は、ボタンの上に表示される)する機能を実現してみましょう
コード
クラスの作成
クラス名をConterShowButtonとします。
System.Windows.Forms名前空間のButtonクラスを継承します
このButtonクラスは、ツールボックスからドラッグ&ドロップするButtonコントロールの元となるクラスです
新しく作ったクラスは、Buttonクラスが持つプロパティやメソッド(イベント含む)を使うことができます
using System.Windows.Forms;
namespace CustomButton
{
internal class CounterShowButton : Button
{
}
}
プロパティの追加
続いて、カウンターの値を保持するCounterShowButtonプロパティを追加しましょう
using System.Windows.Forms;
namespace CustomButton
{
internal class CounterShowButton : Button
{
public int Counter { get; set; }
}
}
カウンターの表示、インクリメントメソッドの追加
カウンターの値を表示し、その後インクリメントするShowCounterメソッドを追加しましょう
using System.Windows.Forms;
namespace CustomButton
{
internal class CounterShowButton : Button
{
public int Counter { get; set; }
public void ShowCounter()
{
Text = Counter++.ToString();
}
}
}
ボタンのクリックイベントの追加
ボタンをクリックした時に実行されるイベントハンドラをコンストラクタに追加してみましょう
using System.Windows.Forms;
namespace CustomButton
{
internal class CounterShowButton : Button
{
public CounterShowButton()
{
Click += CounterShowButton_Click;
}
private void CounterShowButton_Click(object sender, System.EventArgs e)
{
ShowCounter();
}
public int Counter { get; set; }
public void ShowCounter()
{
Text = Counter++.ToString();
}
}
}
VisualStudioの自作コントロールが反映されるのを確認
ソリューションをビルド
ここで、一度ソリューションのビルドを実行してみましょう
ツールボックスにコントロールが追加されるのを確認
Form1.cs[デザイン]を選択すると、ツールボックスに次のようなコントロールが追加されていると思います
コントロールがドラッグ&ドロップできるのを確認
フォームにドラッグ&ドロップすると、コントロールが配置されます
Buttonコントロールを配置するときと同じですよね
プロパティ情報の確認
プロパティを見てみましょう
追加したCounterプロパティが表示されています
実行
実行して動作を確認します
ディスカッション
コメント一覧
まだ、コメントがありません