【KPI】C#の基本的な画面の作り方 - 05：登録ボタン押下イベントとメソッド作成 -【C#】

今回は前回と同じように、登録ボタンの押下イベントを作成する。
と同時に、その中で使うメソッドの一部を作成する。

同じようにデザインの登録ボタンをダブルクリックして作成。
![無題1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/b7c33c59-6a8e-1a2c-b2f9-23c8855a018c.png)
今回はtry-catch処理を入れておく。


まず、登録前に、項目の桁数をチェックしたい。
下記仕様を決める
[コード]：最大桁数6桁の場合のみ登録可能
[名称]　：値が入っており、最大桁数20桁（全角1文字は2桁換算）を超えていなければ登録可能。
　　　　　※現在、[名称]テキストボックスは最大で20文字が入る。理論上は全角20文字で40桁換算となる。

この処理を馬鹿正直に書く場合はかなりコードが長くなる。
さらに、これらのチェックは、項目ごとに似通っている。
よって、共通で使用できるメソッド[CheckLength]を作る。
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/00669eed-31f0-2cbf-f496-86209c885163.png)

``` C#:C#
        private bool CheckLength(TextBox txt, string name, int len, bool maxOnly)
        {
            // 桁数取得（全角を2桁として扱う）
            int lenNow = Encoding.GetEncoding("Shift_JIS").GetByteCount(txt.Text);

            // 未入力の場合
            if (lenNow.Equals(0))
            {
                MessageBox.Show(name + "が入力されていません。");
                txt.Focus();
                return false;
            }

            // 最大桁数のみを受け付ける場合
            if (maxOnly && !lenNow.Equals(len))
            {
                MessageBox.Show(name + "の桁数が" + len + "桁ではありません。");
                txt.Focus();
                return false;
            }
            // 最大桁数を超える場合
            else if (lenNow > len)
            {
                MessageBox.Show(name + "の桁数が" + len + "桁を超えています。");
                txt.Focus();
                return false;
            }
            return true;
        }
```
- txt    ：チェック対象のテキストボックス
- name   ：項目名
- len    ：最大桁数
- maxOnly：trueの場合は最大桁数の場合のみチェックOKを返す

チェックがOKであれば、trueを、そうでなければfalseを返す。


このメソッドを使用して、登録ボタン押下イベントを作成する。
![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/a602270d-1934-7894-0967-21bda905c916.png)

``` C#:C#
        private void BtnUpd_Click(object sender, EventArgs e)
        {
            try
            {
                // チェック処理
                if (!CheckLength(this.TxtCode, this.LblCode.Text, this.TxtCode.MaxLength, true))
                {
                    return;
                }
                if (!CheckLength(this.TxtName, this.LblName.Text, 20, false))
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                // エラーメッセージを表示
                MessageBox.Show(ex.Message);
            }
        }
```

これで、下記の各画面の状態で登録ボタンを押下した際、直近下側のメッセージが表示されるようになる。
![無題4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/390dc826-c420-c285-ada7-a02cdaa4b34a.png)
![無題5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/ad660ab0-e1fc-1cac-e005-11934e948b62.png)
![無題5_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/d35f3589-46f7-94b4-b42d-9b0744b5556f.png)
![無題6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/ed77d0d6-b3e9-22ae-120d-458729a0a767.png)
![無題7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/a38370c2-f856-0744-f79b-a3eaff19bc80.png)
![無題8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575248/8ce0ef56-5fde-71b5-e312-42551ed85880.png)


これで事前チェックが完成する。
次回は更に作り込んでいく。