Winフォームアプリでコントロールの処理
フォームアプリでは、ButtonやLabelなどは、フォームのControlsリストにAddされています
この中から、必要なクラスを抽出して処理をするサンプルを考えてみましょう
フォームアプリでいくつかのコントロールのインスタンスが存在するとします
コード
Controlsリストに複数のコントロールがAddされている状態とします
サンプルは、GameObject型を持ったインスタンスを抽出して、抽象メソッドを呼び出すコードになります
GameObjectはRunメソッドを実装しているため、派生クラスのインスタンスでも実行可能です
foreach (var control in form.Controls)
{
if (control.GetType().IsSubclassOf(typeof(GameObject)))
{
gameObjects.Add(control as GameObject);
(control as GameObject).Run();
}
}
基底クラスを作ります
UnityでのUpdate()メソッドを作り出しています
abstract class GameObject
{
public int Interval { get; set; } = 10;
public void Run()
{
update.Tick += Update;
update.Interval = Interval;
update.Enabled = true;
}
public abstract void Update(object sender, EventArgs e);
}
GameObjectクラスを継承しています
抽象メソッドのUpdateを強制的に実装するように定義しています
class Item : GameObject
{
public override void Update(object sender, EventArgs e)
{
// コード
}
}
クラス図
3つの派生クラスを作っている例です
それぞれのUpdateメソッド(イベント)が実行されます
ディスカッション
コメント一覧
まだ、コメントがありません