2016-11-26 14 views
-1

私はVB.NETを学ぶオンラインの学生です。私は、私が取り組んでいるプロジェクトを持っていて、始めに助けが必要でした。配列を使用して数値入力を確認する

私たちは配列を学んでおり、少し苦労しています。私は各入力の数値の範囲をチェックする配列を使って、ピン検証を作成する必要があります。

アプリケーションには7つのテキストボックスがあります。 txtBox1は範囲7-9、txtBox2は範囲5-7、txtBox3は範囲0-4、txtBox4は範囲0-9、txtBox5は範囲6-9、txtBox6は範囲3-6、およびtxtBox7は範囲内になければなりません。範囲4-8。

[Verify]ボタンをクリックすると、アレイは各入力が指定された範囲内にあることを確認し、ピンが良ければメッセージを表示する必要があります。

コードが実行されていますが、入力が不正であることを確認できません。入力が数値で、範囲内にあることを確認する必要があります。入力が悪い場合、黄色で強調表示するテキストボックスとそのボックスにフォーカスが必要です。私はIsNumericの多くのバリエーションを試して、テキストボックスにフォーカスやハイライトを得ることができません。

コードの仕組みを明確に説明して、私が自分自身でやっていることを理解し、自分が何をしているのかを完全に理解できることを願っています。この将来のプログラマの助けに感謝します。

Option Strict On 

Public Class frmPinVerifier 
Dim blnOk As Boolean = False 

Private Sub btnVerify_Click(sender As Object, e As EventArgs) Handles btnVerify.Click 
    'Arrays 
    Dim intMinimum() As Integer = {7, 5, 0, 0, 6, 3, 4} 
    Dim intMaximum() As Integer = {9, 7, 4, 9, 9, 6, 8} 
    Dim strArrayMessage() As String = {"Must be in range of 7 through 9", "Must be in range of 5 through 7", "Must be in range of 0 through 4", "Must be in range of 0 through 9", "Must be in range of 6 through 9", "Must be in range of 3 through 6", "Must be in range of 4 through 8"} 
    Dim intTextBox() As Integer = {CInt(txtBox1.Text), CInt(txtBox2.Text), CInt(txtBox3.Text), CInt(txtBox4.Text), CInt(txtBox5.Text), CInt(txtBox6.Text), CInt(txtBox7.Text)} 


    'Start Count 
    Dim intCount As Integer = 0 


    For intCount = 0 To intMinimum.Length - 1 And intMaximum.Length - 1 
     If intTextBox(intCount) >= intMinimum(intCount) And intTextBox(intCount) <= intMaximum(intCount) Then 
      blnOk = True 
     Else 

      MessageBox.Show(strArrayMessage(intCount)) 

     End If 

    Next 

    If blnOk = True Then 
     MessageBox.Show("PIN Verified") 
     txtBox1.Clear() 
     txtBox2.Clear() 
     txtBox3.Clear() 
     txtBox4.Clear() 
     txtBox5.Clear() 
     txtBox6.Clear() 
     txtBox7.Clear() 


    End If 
+0

私は、intMinimum配列とintMaximum配列を使用できるはずです。 intMinimumは各桁の最小値を保持し、intMaximumは最小値を保持する必要があります。 –

+0

SOはそれとは逆に動作します。*あなたがする必要のあることをしようとするコードを書きます。あなたが立ち往生したときに、あなたの問題を示すコードで質問を投稿してください。あなたはチュートリアルを要求しているので、私たちはそれをしません。 – Plutonix

+0

私はチュートリアルを求めていません。私はどのように始めるべきかアドバイスを求めています。コードがどのようにコードを動作させるのかを明確に説明しました。それが助けにならないなら、大丈夫です。 –

答えて

1

問題のテキストボックスのフォーカスを設定するか、または背景色を変更するコードはありません。

テキストボックスへの参照として配列を設定できます。これにより、これらのテキストボックスのプロパティに簡単にアクセスできます。 Dim intTextBox() As Integer = {CInt(txtBox1.Text),...に近づいていましたが、配列内で.Textプロパティを使用すると、あまりにも特殊すぎます。

Private Sub btnVerify_Click(sender As Object, e As EventArgs) Handles btnVerify.Click 
    Dim nums = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7} 
    Dim intMinimum() As Integer = {7, 5, 0, 0, 6, 3, 4} 
    Dim intMaximum() As Integer = {9, 7, 4, 9, 9, 6, 8} 
    Dim pinIsValid As Boolean = True 

    For Each tb In nums 
     tb.BackColor = Color.White 
    Next 

    For i = 0 To nums.Length - 1 
     Dim val = Integer.Parse(nums(i).Text) 
     Dim minVal = intMinimum(i) 
     Dim maxVal = intMaximum(i) 
     If val < minVal OrElse val > maxVal Then 
      pinIsValid = False 
      nums(i).BackColor = Color.Yellow 
      nums(i).Focus() 
      'TODO: Adjust "Entry {i + 1}" so it makes sense to the user. 
      MessageBox.Show($"Entry {i + 1} must be in the range {minVal} to {maxVal} (inclusive)") 
      Exit Sub 
     End If 
    Next 

    If pinIsValid Then 
     For i = 0 To nums.Length - 1 
      nums(i).Text = "" 
     Next 
     MessageBox.Show("PIN Verified") 
    End If 

End Sub 
+0

ありがとう!あなたが非数字を入力するとどうなりますか?あなたのコードは理にかなっています。しかし、非数値を入力すると、Integer.Parse(nums(i).Text)にエラーが発生します。私はあなたがインデックス内のどこにいるのかを見つけるためにカウンタを使用しなければならないと思ったが、並列配列はあなたがコード内のどこにいるのかを知っていると思いますか? –

+0

@BradWethington 1)[Int32.TryParse](https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx)を使用して調査する必要があります。 2)私はこの文脈であなたが "並行している"という意味を理解していません。 –

+0

並列配列とは、2つの異なる配列が一緒に実行されていることを意味します。私はそれを考え出した。入力が指定された範囲内にあるかどうかを確認する前に、ループの前にIsNumeric Loopを実行しなければなりませんでした。同じボタンをクリックして複数のループを実行できることはわかりませんでした。助けてくれてありがとう。私はゆっくりとこれを取得していますが、それは非常に困難です。 –

関連する問題