初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Visual Basic 2019 入門

17.算数ドリルを作ろう その2

 

今回は [ 算数ドリルを作ろう ] の続きです。

過去に作業したことがある手順については、説明を少しずつ省略していきます。
もし分からなくなったら前のページを読み返してみてください。

 

 

テキストボックスを調整しよう

テキストボックスは初めて使いますね。
実行して入力を試してみましょう。12345 と入力します。

 

入力テストを行う

 

 

文字が小さくて左寄りですね。
まず、フォントサイズを大きくします。ラベルの時と同じです。
テキストボックスをクリックして、Size プロパティを 16 に変更します。

フォントサイズを大きくする

 

 

続けて文字の配置も変更しましょう。
TextAlign プロパティを Left (左寄り) から Center (中央) に変更します。

フォントサイズを大きくする

 

 

実行してみます。
テキストボックスに入力した文字が大きくなり、中央配置になりました。

実行結果を確認する

 

 

 

Name プロパティを変更しよう

ラベルやテキストボックスをフォームに配置したとき、自動的に名前が付きます。Label1 や TextBox1 などです。

あつかうオブジェクトが少なければ問題ないのですが、多くなってくるとデザイン画面に戻って名前を確認することになります。
そうならないように、オブジェクトの機能に合わせて名前を変えていくのが望ましいです。

ということでテキストボックス TextBox1 の名前を変えてみましょう。
Name プロパティを変更します。

 

オブジェクトに名前を付ける

 

名前を InBox としました。
InBox と入力して Enter キーを押します。
するとオブジェクトの名前が InBox になります。

nameを変更する

 

課題ではないプログラムを作成するときは、もっと分かり易い名前がいいと思います。
自分なりのルールを作って名前を付けていきましょう。

 

 

KeyPress イベント

解答を入力するためにテキストボックスを配置しました。
しかし、配置しただけでは役に立ちません。
入力した値をプログラム内部で使えるようにします。

ここでテキストボックス InBox に対してイベントを用意します。
KeyPress というイベントで、キーボードから文字キーが押されたときに発生します。
まずは実際にやってみて、イベントとはどんなものか体験してください。

 

イベントを用意するため、新しく操作をおぼえましょう。
プロパティの画面に注目です。
ツールバーの中にある2つのアイコンですが、左はプロパティアイコン、
右はイベントアイコンになっています。
今後、この2つのアイコンを切り替えながら作業することが多くなります。

 

プロパティとイベントの切り替え

 

 

それではイベントを用意してみましょう。
イベントアイコンをクリックして、keyPress をダブルクリックします。

keyPressイベントを作る

 

 

テキストボックスの中で何かキーを押すと、この InBox_KeyPress が呼ばれます。
どんな動きになるのか Console.WriteLine で確認してみましょう。
押したキーは e.KeyChar で、
テキストボックスに入力された内容は InBox.Text で確認できます。
なお &(アンド) を使えば文字列をつなげることができます。
(& はアンパサンドとも言います)

 

押された時の情報を表示する

 

 

実行して 123456 と入力してみましょう。
入力しながら出力ウィンドウを確認すると、KeyPress の動作がよく分かります。

出力ウィンドウを確認する

 

結果を見ると、1の横は空白で、2の横は1が表示されています。
3を入力したときには、InBox.Text に 12 しか入っていないことが分かります。
このことから InBox_KeyPress が呼ばれたとき、
押したキーはまだ InBox.Text に入ってないことが分かりますね
このように動作をしっかり確認しておくことが、
正しいプログラムを組む助けになります。

 

 

Enter キーで入力確定

答えの入力をどうするか、少し考えてみましょう。
数値だけ入力してもらうと、入力途中なのか完了しているのか分かりません。
入力が完了したという合図が必要です。
今回は Enter キーが押されたら完了したことにします。
InBox_KeyPress の中を次のように変更してください。

 

enterキーで入力を確定する

 

If 文を使って Chr ( Keys.Enter ) と比較します。これは Enter キーのコードを
取得する方法です。
これが入力されたものと同じなら Enter キーが押されたことになります。

InBox.Text = ""
これはテキストボックスの中をクリアしています。

 

 

実行してみましょう。
適当な数字を入力してみて下さい。Enter キーを押すまで入力は続きます。
Enter キーを押すことで入力は確定されます。

入力の確定をテストする