• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:入力判定の仕方が分からなくて、困ってます・・)

VB.NETでキーボード入力の正誤判定を行う方法

このQ&Aのポイント
  • VB.NETでキーボードからの入力を受け取り、Labelに表示されている文字との正誤判定を行うには、Form1_KeyPressイベントを使用します。
  • Form1_KeyPressイベントハンドラ内で、Labelに表示されている文字と入力された文字を比較し、一致すれば正解、不一致であれば不正解の処理を行います。
  • 具体的には、Mid関数を使用してLabelのテキストを1文字ずつ取得し、入力された文字と比較します。一致すれば次の文字に進み、不一致であれば不正解の処理を行います。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

イメージはタイピング練習ソフトですか...? > If Mid(Label2.Text, a, 1) = "入力したのと同じ" Then "入力したのと同じ" --> e.KeyChar 「こんな感じにしたいのかな?」と推測しながらコードを書きました。 とりあえず、新規プロジェクトで、フォームに Label1 を配置し、以下の コードを貼り付けて動作確認してみて下さい。  # コードを掲載するときは、面倒でもイベントプロシージャの引数部も  # ちゃんと書き込みましょう。 ' 問題の文字列を保管しておくモジュールレベルの配列 Private Odai() As String ' 問題番号を保管しておくモジュールレベル変数 Private iOdaiNum As Integer = 0 Private Sub Form1_Load( _   ByVal sender As Object, _   ByVal e As System.EventArgs _ ) Handles Me.Load   ' 問題を準備します   ReDim Odai(2)   Odai(0) = "oshiete goo"   Odai(1) = "visual basic"   Odai(2) = "sample string"   ' 1 問目の表示   Label1.Text = Odai(iOdaiNum) End Sub Private Sub Form1_KeyPress( _   ByVal sender As Object, _   ByVal e As System.Windows.Forms.KeyPressEventArgs _ ) Handles Me.KeyPress   ' 大文字・小文字を区別しない場合は、テキスト比較で入力文字の正誤比較を行うか、   ' 大文字・小文字のどちらかに統一してから比較する   If StrComp(Mid(Label1.Text, 1, 1), e.KeyChar, CompareMethod.Text) = 0 Then     ' 入力文字が正解なら1文字削る     Label1.Text = Mid(Label1.Text, 2)   Else     ' 失敗時の処理     MsgBox("ミス")   End If   ' 全ての入力が正しければ、次の問題へ   If Len(Label1.Text) = 0 Then     ' 次の問題表示のため、問題番号を加算します     iOdaiNum = iOdaiNum + 1     ' 用意した問題数を超えないようにします     If iOdaiNum > UBound(Odai) Then       iOdaiNum = 0     End If     ' 次の問題をラベルに表示     Label1.Text = Odai(iOdaiNum)   End If End Sub

noname#30978
質問者

補足

わざわざプログラムを組んでくださってありがとうございます。 タイピングソフトです。 参考にして、再び挑戦してみたのですが、"e.KeyChar"の"e"が 宣言されていないと出るんです。ただ、宣言すればいいだけなので しょうか?

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> "e.KeyChar"の"e"が宣言されていないと出るんです。 > ただ、宣言すればいいだけなのでしょうか? いいえ、違います。 > Private Sub Form1_KeyPress() この部分を Private Sub Form1_KeyPress( _   ByVal sender As Object, _   ByVal e As System.Windows.Forms.KeyPressEventArgs _ ) Handles Me.KeyPress に差し替えてみて下さい。

noname#30978
質問者

お礼

出来ました!それだけで良かったんですね(汗) 教えていただいたことを参考にし、続きに取り組みたいと思います。 ありがとうございました。

関連するQ&A