お疲れ様です。たなしょです。
今日はGUIアプリをたくさん作りました。
GUIアプリのパーツについて理解することができました。
internalキーワード
VCで新しいクラスを作るとデフォルトで付与されます。
同じアセンブリ内のコードからアクセスできるので基本的につけっぱなしでも問題なさそうです。(同じプロジェクト内でビルドしてるなら問題なし?)
抽象クラスを使ったアプリ
100以上なら割り算、100未満なら掛け算を実行します。
処理の順番は以下の通りです。
1.ボタンを押すとDoが呼ばれます。
private void Do()
{
obj.DoCalc(Int32.Parse(textBox1.Text));
}
2.スーパークラスのDoCalcメソッド呼びます。
public void DoCalc(int n)
{
if (Num > n)
{
this.Multiplier(n);
}
else
{
this.Divider(n);
}
}
3.呼ばれているMultiplier
とDivider
は各抽象クラスにそれぞれ処理の詳細が記載されています。
3-1.Cls1ならn*2と計算します
public override void Multiplier(int n)
{
Val = n * 2;
MessageBox.Show("処理結果は" + Val);
}
3-2.Cls2ならn*4と計算する
public override void Multiplier(int n)
{
Val = n * 4;
MessageBox.Show("処理結果は" + Val);
}
フォームアプリケーションの初期ファイルについて
Program.cs
アプリケーションの開始に必要なMain()メソッド存在します。
Form1.Designer.cs
フォームやコントローラの配置が記述されています。
下手にオブジェクトをクリックした後にビルドするとエラーになるのはだいたいこのファイルのせいです。
Form1.cs
ボタンのクリック処理やメニュー選択の実行処理などを保存します。
プログラマーがいじるのはここがメインです。
計算機をつくる
AとBの値を計算するのみの計算機を作りました。
以下処理の順番です。
1.各ボタンを押すとチェックが始まりtrueになると計算結果をメッセージボックスに出力します。
private void button1_Click(object sender, EventArgs e)
{
if (CheckValue())
MessageBox.Show(Convert.ToString(_num1 + _num2));
}
2.入力チェックをしてA,B欄どちらかに数字が入ってなければエラーメッセージを返します。最後にテキストボックスをクリアします。
private bool CheckValue()
{
try
{
_num1 = Convert.ToInt32(textBox1.Text);
_num2 = Convert.ToInt32(textBox2.Text);
return true;
}
catch
{
MessageBox.Show("A欄とB欄に半角数字を入力してください。", "エラー");
return false;
}
finally
{
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
}
次の誕生日までの日付がわかるやつ
作りは単純でカレンダーから日付を選択して、今日の日付との差分を計算しています。
private void button1_Click(object sender, EventArgs e)
{
label2.Text = "選択した日付" + dateTimePicker1.Value.Date.ToString("yyyy/MM/dd");
int birthdaty = dateTimePicker1.Value.Subtract(DateTime.Today).Days;
label3.Text = "本日から次の誕生日まであと" + birthdaty.ToString() + "日";
}
最後に
GUIのパーツを使えば簡単にカレンダーなどを実装できるので色々なアイデアをお手軽に実装できますね!