WinFormsアプリをもっと使いやすくしよう!入力チェックとクリアボタンを追加する
昨日は、コンソールアプリをWindowsアプリ(WinForms)へ移植しました。
今日は、そのアプリをもっと使いやすくしてみましょう。
実際のソフトウェアでは、
- 間違った入力を防ぐ
- ボタン1つで入力を消す
といった工夫がされています。
今回は、その中でもよく使われる機能を追加していきます。
今日の完成イメージ
昨日の画面に、
- 「クリア」ボタン
- 入力チェック
- メッセージボックス
を追加します。

数字以外を入力すると
数字を入力してください。
というメッセージが表示されます。
クリアボタンを追加しよう
フォームへ Button を1つ追加します。
| コントロール | Nameプロパティ | Textプロパティ |
|---|---|---|
| Button | buttonClear | クリア |
ボタンをダブルクリックしよう
クリアボタンをダブルクリックすると、
private void buttonClear_Click(object sender, EventArgs e)
{
}
が作成されます。
入力をすべて消してみよう
次のコードを書いてみましょう。
private void buttonClear_Click(object sender, EventArgs e)
{
textBoxEI.Clear();
textBoxEO.Clear();
textBoxILF.Clear();
textBoxEIF.Clear();
textBoxEQ.Clear();
textBoxCoef.Clear();
labelTotal.Text = "";
labelFP.Text = "";
textBoxEI.Focus();
}
これで
- 入力欄
- 計算結果
がすべて消えます。
さらに
textBoxEI.Focus();
によって、
最初の入力欄へカーソルが戻ります。
数字以外を入力するとどうなる?
例えば
abc
を入力して計算すると、
プログラムは途中で止まってしまいます。
これは
Convert.ToInt32()
が
数字ではない文字を変換できないためです。
TryParseを使ってみよう
今回は
Convert.ToInt32()
ではなく
int.TryParse()
を使います。
EIだけ変更してみよう
まずは EI だけ変更します。
今まで
int ei = Convert.ToInt32(textBoxEI.Text);
でした。
これを
if (!int.TryParse(textBoxEI.Text, out int ei))
{
MessageBox.Show("EIには数字を入力してください。");
textBoxEI.Focus();
return;
}
へ変更します。
TryParseとは?
int.TryParse()
は
「数字へ変換できるか試す」
という命令です。
変換できれば
true
変換できなければ
false
になります。
そのため、
数字ではない場合だけ
MessageBox.Show()
でメッセージを表示できます。
MessageBoxを使ってみよう
MessageBox.Show("EIには数字を入力してください。");
を実行すると、
次のような画面になります。
┌────────────────────────────────┐
│ EIには数字を入力してください。 │
│ │
│ [OK] │
└────────────────────────────────┘
Windowsアプリでは、
このようなメッセージ画面を
MessageBox
と呼びます。
他の入力欄も同じようにしよう
EO
ILF
EIF
EQ
も同じように
int.TryParse()
へ変更してみましょう。
補正係数もチェックしよう
補正係数は小数なので
double.TryParse()
を使います。
if (!double.TryParse(textBoxCoef.Text, out double coef))
{
MessageBox.Show("補正係数には数字を入力してください。");
textBoxCoef.Focus();
return;
}
実行してみよう
例えば
EIへ
abc
を入力して
「計算する」
を押してみましょう。
すると
EIには数字を入力してください。
と表示されます。
まとめ
今回は、昨日作成したWinFormsアプリをさらに使いやすくしました。
今日覚えてほしいポイントは次の4つです。
- Clear() は入力欄を空にする
- Focus() はカーソルを移動する
- TryParse() は安全に数字へ変換する
- MessageBox.Show() はメッセージを表示する
実際の業務で使われるWindowsアプリも、このように「正しく入力できること」や「使いやすさ」を考えて作られています。
今回追加した機能は小さな改善ですが、「動けばよいプログラム」から「使いやすいプログラム」へ一歩進化させるための大切な技術です。









ディスカッション
コメント一覧
まだ、コメントがありません