プロが教える店舗&オフィスのセキュリティ対策術

 Form1にButton1とTextBox1、TextBox2、TextBox3を配置します。
TextBox2はMultiLineにします。
プログラムを実行し、1度目は4などを入れ「Enterキー」を押し、間違えます。
TextBox3には「不正解」と表示されます。
次に、textbox2に正解の3を入れ「Enterキー」を押しても「正解」とは表示されません。
私の頭では「正解」と表示されると思うのですが、どこがおかしいのでしょうか。
 もう一つ、TextBox2はEnterキーを押したときの「ピン」という警告音が出ないようにMultiLineにしていますが、MultiLineにせず、警告音を消す方法はありますか。宜しくお願いいたします。
 以下はコードです。
Dim Problem As String
Dim RightAnswer As String
Dim Answer As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
problem = "1+2="
RightAnswer = "3"
End Sub
Private Sub TextBox2_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox2.PreviewKeyDown
If e.KeyCode = Keys.Enter Then
Answer = Me.TextBox2.Text
If Answer = RightAnswer Then
Me.TextBox3.Text = "正解"
Else
Me.TextBox2.Text = ""
Me.TextBox3.Text = "不正解"
Me.TextBox2.Focus()
End If
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.TextBox1.Text = Problem
Me.TextBox2.Focus()
End Sub

A 回答 (1件)

音を消すには TextBoxのKeyPressイベントにて



Private Sub TextBox2_KeyPress(sender as Object, e as KeyPressEventArgs) Handles TExtBox2.KeyPress
  if e.KeyChar = vbCr then
    e.Handled = True
  End if
End Sub

を記述します

TextBox2のMultiLineを Falseに設定して見ましょう


MultiLineがTrueで質問のコードだと
前回入力した 改行文字(vbCrLf)が TextBox2に残っているために 文字列『3』と文字列『vbCrLf+3』では
同じでないので『不正解』が表示されているのです
    • good
    • 0
この回答へのお礼

文字だけでなく、改行コード等もチェックするのですね。
どうもありがとうございました。

お礼日時:2015/01/13 08:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!