WindowsFormアプリで学ぶクラスの考え方
自作コンポーネントの作成を通してクラス、インスタンスについて学びます。
あらかじめ、猫のイラストを入手しておきます。
新規のプロジェクト「OriginComponent」を作成します。
OriginComponentプロジェクトを右クリックして、
「追加」>「新しい項目」を選択

「Visual C# アイテム」> 「WindowsForms」 > 「ユーザーコントロール」を選択し、
名前を「Cat.cs」で追加

「Cat.cs[デザイン]ウィンドウで、PictureBoxをD&D
「親コンテナーにドッキングする」を選択

「サイズモード]をStretchImageに変更
「親コンテナーにドッキングする」を選択

「イメージの選択]で、「プロジェクトリソースファイル」>「インポートボタン」をクリック
入手しておいた「猫のイラストを選択」> 「OK」

更新されていることを確認

「ビルド」メニュー > 「ソリューションのリビルド」を選択

Form1.cs[デザイン]ウィンドウに切り替え。
ツールボックスウィンドウに Catが表示されているのを確認

CatをForm1にD&Dできることを確認

右クリックで一旦削除

Cat.cs[デザイン]ウィンドウに切り替えて、右クリックで 「<> コードの表示」を選択
次のコードを追記
[Browsable(true)] public int Hp { get; set; } = 100;

「ビルド」メニュー > 「ソリューションのリビルド」を選択
再度、Form1ウィンドウで、CatをD&Dしプロパティを確認
その他でHP が100に設定されているのを確認

再度、Catを削除
Catコードウィンドウに切り替え、次のコードを追記
[Description("ヒットポイント")] [Category("特徴")]

再度、リビルド、 Form1ウィンドウでCatを追加、プロパティを確認
HPが「特徴メニュー」内にあり、下に説明(ヒットポイント)と出ていることを確認

Catを削除して、Catウィンドウで次のコードを追加
public partial class Cat : UserControl { [Browsable(true)] [Description("攻撃力")] [Category("特徴")] public int AttackPower { get; set; } = 100; [Browsable(true)] [Description("防御力")] [Category("特徴")] public int DiffencePower { get; set; } = 100; public void Attack() { MessageBox.Show($"{Name} Attack!!"); } private void PictureBox1_Click(object sender, EventArgs e) { Attack(); }
Catデザイン画面で、プロパティ > イベント(雷マーク)を選択
Clickアクションに [PictureBox1_Click]を設定

再度、Form1ウィンドウで、Catを配置し、各プロパティが表示されているのを確認

プログラムを実行して、猫をクリックすると cat1 Attack!とメッセージが表示されるのを確認

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace OriginComponent { public partial class Cat : UserControl { [Browsable(true)] [Description("ヒットポイント")] [Category("特徴")] public int Hp { get; set; } = 100; [Browsable(true)] [Description("攻撃力")] [Category("特徴")] public int AttackPower { get; set; } = 100; [Browsable(true)] [Description("防御力")] [Category("特徴")] public int DiffencePower { get; set; } = 100; public Cat() { InitializeComponent(); } public void Attack() { MessageBox.Show($"{Name} Attack!!"); } private void PictureBox1_Click(object sender, EventArgs e) { Attack(); } } }
ディスカッション
コメント一覧
まだ、コメントがありません