LoginSignup
1
0

More than 1 year has passed since last update.

お疲れ様です。たなしょです。
今日はGUIアプリをたくさん作りました。
GUIアプリのパーツについて理解することができました。

internalキーワード

VCで新しいクラスを作るとデフォルトで付与されます。
同じアセンブリ内のコードからアクセスできるので基本的につけっぱなしでも問題なさそうです。(同じプロジェクト内でビルドしてるなら問題なし?)

抽象クラスを使ったアプリ

100以上なら割り算、100未満なら掛け算を実行します。
image.png
処理の順番は以下の通りです。
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.呼ばれているMultiplierDividerは各抽象クラスにそれぞれ処理の詳細が記載されています。
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の値を計算するのみの計算機を作りました。
image.png
以下処理の順番です。
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();
    }
}

次の誕生日までの日付がわかるやつ

image.png
作りは単純でカレンダーから日付を選択して、今日の日付との差分を計算しています。

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のパーツを使えば簡単にカレンダーなどを実装できるので色々なアイデアをお手軽に実装できますね!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0