WindowsFormアプリで学ぶクラスの考え方

自作コンポーネントの作成を通してクラス、インスタンスについて学びます。

あらかじめ、猫のイラストを入手しておきます。

新規のプロジェクト「OriginComponent」を作成します。

OriginComponentプロジェクトを右クリックして、
「追加」>「新しい項目」を選択

Vi

「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();
        }
    }
}

C#,WindowsFormアプリ

Posted by hidepon