#1. 前回リンク
https://qiita.com/Usyuuu-program-beginner/items/ca6d2019a1e5a933faf6
#2.次回記事リンク
https://qiita.com/Usyuuu-program-beginner/items/6b010dce68b437e5a72e
#3. やったこと
下のサイトの 5.イベント~6.コントロールまでを学習
http://kaitei.net/csforms/
#4. 配信時の録画
https://youtu.be/LV1YP31IyFw
※動画のチャプターはコメント欄の固定コメントを参照ください。
#5. 今回学んだこと
Windowsフォームというよりも、クラスとは何かを学びました。
#6. クラスとは
オブジェクトを作る為の設計図のようなもの。
記載例
class Form1
{
(クラスの実装)
}
このクラスから作られた実体のことが「インスタンス」
new()関数を使用すること生成されます
Application.Run(new Form1());
##6.1 クラスの構造について
Cを学んできた人は**「構造体」のような構造**と言えば伝わりやすいと思います。
クラスは以下のように、メンバ変数やメンバ関数(メソッド)がクラス内で定義されます。
class Form1 : Form
{
int clickCount = 0; // メンバ変数1
Button button; // メンバ変数2
// メンバ関数(コンストラクタ)
public Form1()
{
button = new Button()
{
Text = "クリックしてください",
Location = new Point(10, 10),
Size = new Size(160, 40),
};
// イベントハンドラを登録
button.Click += new EventHandler(button_Click);
this.Controls.Add(button);
}
// イベントハンドラ本体
void button_Click(object sender, EventArgs e)
{
clickCount++;
button.Text = clickCount + " 回クリックされました";
}
}
##6.2 コンストラクタについて
クラスの中で、クラス名と同じ名前のメンバ関数のことを「コストラクタ」と呼びます
インスタンスが生成される際に実行されるメソッドのことです。
##6.3 thisとはなにか
クラスをインスタンス化したものを"this"で参照する。
3.2章「クラスの構造について」のソースコード例内にある”this.Controls.Add(button);"は「Form1」のインスタンス化されたものを"this"で参照している。
##6.4 Control.Add()は何をしているのか
登録先のフォームへ、指定のコントロールを追加するためのメソッド。
コントロールの定義をしたクラスをインスタンスしただけでは、フォーム上に反映されません。
Control.Add()メソッドを使用するか、コントロールのParentプロパティを使用して登録することで初めてフォーム上に情報が反映されます。
※ コントロールとは
ボタンやチェックボックスなどといった部品の事を「コントロール」と呼ぶ。
#7 InitializeComponentとForm1(コンストラクタ)の使い分けについて
##5.1 InitializeComponentの使用用途
Program.cs内の void Main()から呼び出される初期設定用メソッド。
Form1.cs[デザイン]画面で編集した内容が自動的に反映されるのが”InitializeComponent"であり、自分で編集することは無い。
##7.2 Form1(コンストラクタ)の使用用途
クラス”Form1”をインスタンス化した際に最初に処理されるメソッド。
自分で処理内容を編集する為、Form1.cs[デザイナ]では実装できない初期設定処理はこちらに実装する。
#8 EventVisualStylesとは
色やフォント等を制御する際に呼ばれるメソッド。
上記を修正したりした場合は、Main()メソッドから呼び出す。
#9 オーバーロードとは
同じ名前で違う引数の関数を定義できること。
class Test
{
public void Test( int a )
{
//コンストラクタ(1)の処理
}
public void Test( char a )
{
//コンストラクタ(2)の処理
}
public void Test( int a 、int b)
{
//コンストラクタ(3)の処理
}
}
#10 オーバーライドとは
既存のイベントハンドラ内容を上書きして、独自のイベントハンドラとして定義できる
#11 最後に
今回も参考サイトの内容とは別に多くのことを学習できました。
次回は章以降の勉強を進めようと思います。
## ニコニコ配信先
https://com.nicovideo.jp/community/co3601066
Twitch配信先
Discordリンク