算数ドリルと作ってみる後編になります。
■復習
実際にGUI&フローチャートの設計を行い、プロジェクト作成、GUI作成を行いました。
![](https://t19488sns.com/wp-content/uploads/2020/09/347da013d0d8adb1a8a15ae022c8ace7.png)
いい感じにできているでしょうか?
今回は、設計時に作ったフローチャート通りにソフトを作成したいと思います。
よろしくお願いいたします。
■クリックイベントの作成
![](https://t19488sns.com/wp-content/uploads/2020/09/fd9685467745bb70ad9d7058cb7b62cd-1.png)
今回したいのは、
【回答】ボタンをクリックされた時に
左図のフローで答え合わせをしましょう。
『ボタンをクリックされた時』に動作するイベントを作りましょう。(以降クリックイベントと言います。)
まず、初めにクリックイベントを作成したいと思います。
![](https://t19488sns.com/wp-content/uploads/2020/09/668cce08f3d0593219cf71353cacb735.png)
クリックイベントの作成は、GUI上に設置したボタンを【ダブルクリック】しましょう。
自動でクリックイベントのコード(Method)が生成されます。
■クリックイベント処理を作成
![](https://t19488sns.com/wp-content/uploads/2020/09/d741e0756f80b14ad7a550d5ffcb4cd3.png)
やりたいことは、lblNum1の数字とlblNum2の数字を足し算する事です。
Labelの記載内容は、プロパティのTextの内容になります。
回答欄の数字の前に、答えを計算しましょう。答えは整数の数値です。
![](https://t19488sns.com/wp-content/uploads/2020/09/fde8b4c9707b00a339a36f2f22683f8e.png)
答えは数値のため【int型】の『ans』という名前の変数に一時保管します。
LabelのTextを足し算しましたが、エラーになりました。
マウスを上に充てると、エラーの内容を確認する事ができます。
『stringをintに暗黙に変換できません』。。。
Textは文字(string)で、答えは数値(int)である為、型が一致していないと怒られてます。
その為、文字(string)を数値(int)に変換しないといけません。
書き直します。
![](https://t19488sns.com/wp-content/uploads/2020/09/2df69cf84199c4ae9970654b4f1866fa.png)
文字(string)を数値(int)に変換する時は、
《int.Parse(文字列)》
で対応します。
回答欄の数字と答えが一致しているか確認しましょう。
![](https://t19488sns.com/wp-content/uploads/2020/09/fcefb8be40d338cd62e185c4b4740602.png)
一致しているかどうかの判断は、
《if(条件)》を使います。
条件が一致している時に
{ }の処理を行います
今回の条件は、
「lblNum1 & lblNum2 の数値の足し算の結果(ans)と回答欄の入力(txtAnswer.Test)」が
一致しているかどうかを判定します。
先ほど同様、回答欄の入力は文字(string)の為、数値(int)に変換しましょう。
一致しているときは、『正解』を表示、不一致の時は『不正解』を表示するようになります。
■動作確認
![](https://t19488sns.com/wp-content/uploads/2020/09/74d863c4f21f3a1656edbc48195613f2.png)
再生マークをクリックしましょう。
![](https://t19488sns.com/wp-content/uploads/2020/09/d93ac440661b0de0b7166f9d5c282590.png)
回答欄(TextBox)に数値を入れて、ボタンを押しましょう。
すると、下記結果になります。
![](https://t19488sns.com/wp-content/uploads/2020/09/69eb50cd77fbf9e71cf10247f8df57fd.png)
やりましたっっ!!できました!!
おめでとうございます!!
■いじわるチェックをしてみる
人が入力するのは、絶対に文字とは限りません。ましてや、空白のままかもしれません。
では、空白で【回答】ボタンを押したとき、文字を入力して【回答】ボタンを押したとき、
どうなるのでしょうか??
![](https://t19488sns.com/wp-content/uploads/2020/09/2df694fbdb9720415c8fd91134659f74.png)
プログラムが止まって、何かエラー(例外)を出しています。
内容を要約すると、
「int.Parse(txtAnswer.Text)を変換することはできません」
どうやって対処すればいいのでしょうか??
この対処には好みがあると思いますが、
今回は、txtAnswer.Textが数値に変換できるかどうかをチェックしましょう!!
まずはフローチャートの修正です。
![](https://t19488sns.com/wp-content/uploads/2020/09/e3123ec4101a9f9c74b0b88e2ea6a579.png)
フローチャートでは判定の前に『入力値確認』を入れました。
『入力値確認』では、『回答欄が数値に変更可能か』の確認を行います。
![](https://t19488sns.com/wp-content/uploads/2020/09/95d7ff4061f6164713b0f7c7ffb42676.png)
数値変更可能だった時の変数
inpを定義します。※名前なので何でもOK
《int.TryParse(文字列, out 変数)》を使って
数値に変更可能か確認します。
結果はbool型で出力されます。
True:数値変換可能 / False:数値変不可
結果が数値変換不可(False)の時は、”入力値不正”と表示して、処理を終了します。
この条件を入れたことで、結果は下記のようになります。
![](https://t19488sns.com/wp-content/uploads/2020/09/38ba456f1707c27052e3171fa0148450.png)
これで、回答欄に何を入れられても怖くありませんっっ!!
これで一通りフローチャート通りにできました。
まだまだ、子供に使ってもらうためには改善の余地がありそうです。
次回は、改善をしていきたいと思います。
■まとめ
①設置したButtonをダブルクリックすると、クリックイベントが自動生成される。
②計算をするときは、型を一致させる必要がある。
③文字を数値(int)に変換する時は、《int.Parse( 文字 )》を使う。
④文字が数値(int)に変換可能か確認する時は《int.TryParse( 文字 , out 変数)》を使う。
![](https://t19488sns.com/wp-content/uploads/2020/09/profile.png)
業務でプログラミング(C#/VB/Python)を作っている。
挫折を何回も繰り返し、幾度の壁を乗り越えてきた。
乗り越えてきた事を忘れないように記録に残す。
同じ思いをしている人への情報提供になれたらと思う。
基本は初心者に向けたプログラムの情報を提供する。
コメント