2011-07-05 4 views
0

私は、ユーザーの入力を受け入れるメインメニューを作成しようとしています。 最初に、forループでは、最初のパスワードインデックスのみがチェックされています。 ValidPasswords()配列内の各パスワードに対して、入力されたパスワードをチェックしたいと思います。.NETメインメニューのヘルプ

第2に、My forループは私がしたいことをしていません。ユーザーにパスワードを入力する機会を3回与えたいと思います.3を超えると、3回試してフォームを終了したことを伝えます。今すぐ、3回ループして、ユーザーに再試行する機会を与えずに終了します。私はreturn文を入れても、それは戻り続けて3回ループしません。

Public Class frmMain 
    Dim ValidPasswords() = {"1234", "2222", "8918", "9911"} 
    'Dim ValidPWList As New List(Of String) 
    Dim pwIndex As Integer = 0 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    ' For pwIndex = 0 To ValidPasswords.Length 'TOTAL PASSWORDS 
    If txtPW.Text = ValidPasswords(pwIndex) Then 


    Else 
     For i = 0 To 2 '3 MAX ALLOWABLE ATTEMPT 
      MessageBox.Show("Invalid Password, Please try again.", "Invalid Credentials") 
      txtPW.Focus() 
     Next 
     MessageBox.Show("Exceeded 3 password attempts.") 
     Me.Close() 
    End If 


    If txtFNAME.Text = "" Then 
     MessageBox.Show("Please enter your name!", "Error") 
     'ElseIf txtPW.Text <> "1234" And txtPW.Text <> "2332" And txtPW.Text <> "0192" And txtPW.Text <> "2010" Then 
     'MessageBox.Show("Invalid Password, Please try again.", "Invalid Credentials") 
    Else 
     g_welcomeMessage = ("Welcome, " + txtFNAME.Text + " " + txtLNAME.Text + ", to Image Viewer 1.0") 
     frmImage.ShowDialog() 
    End If 


End Sub 


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    MessageBox.Show("Thanks for trying me out!", "Goodbye") 
    Me.Close() 
End Sub 

ありがとうございます!

答えて

2

あなたはダニエルの前に物事を持っています。あなたのアプリケーションのハードコードされたパスワードに関する助言をあなたに伝えておらず、基本を把握しようとしているだけであると仮定します...あなたが指定しなかったので、.Net 4と仮定します;-)

I 「ので、任意のマイナーな構文の問題を言い訳手でこれをやっメートル:

Public Class frmMain  
    Private validPasswords As List(Of String) = New List(Of String) From {"1234", "2222", "8918", "9911"}  
    Private failedAttempts As Integer = 0  

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
    If String.IsNullOrWhitespace(txtFNAME.Text) Then 
     MsgBox("Please enter a name") 
     Return 
    End If 

    If ValidPasswords.Any(Function(x) String.Equals(txtPW.Text, x)) Then 
     ' User has a name and entered a valid password... 
     g_welcomeMessage = ("Welcome, " + txtFNAME.Text + " " + txtLNAME.Text + ", to Image Viewer 1.0") 
     frmImage.ShowDialog() 
    Else 
     failedAttempts += 1 
     If failedAttempts = 3 Then 
      MessageBox.Show("Exceeded 3 password attempts.") 
      Me.Close() 
     End If 
    End If 
End Sub 

' The other method here... 

エンドクラス

+0

うん、私は後方にそれを持っていたとします。私はそれを書くためにさまざまな方法で遊んでいた...しかし、これは素晴らしいです。うまくいけば、私はそのようなコードを書くことができるだろう:)私は何をしたいと思いますパスワードをハードコードしていません...ユーザーが登録し、データベース/サイズ変更可能な配列に作成したパスワードを保存し、おそらくあまりにも進んだ。どんな方向に?ありがとう! – Daniel

+0

絶対にダニエル - 私はあなたが知っていることに固執するのではなく、知識を求めていることをうれしく思っています。 VB.Netユーザーログオンのためだけにgoogle、それを行うさまざまな方法の例がたくさんあります。私はあなたがアプリケーション内からAsp.Netのメンバシッププロバイダを使用することも簡単にできると信じています。あなたが学んでいる間にフルボードシステムには行かないでください。段階的に構築します。あなたのアプリケーションの詳細をデータベースに保存します。次にデータベースが作成されます。希望が助けてくれる! – Smudge202

+0

Hmmm、思った通りに、もし私がどのようにコードするかのスタイルが好きなら、読んで学ぶ物のリストに追加してください:Lambda Expression Tutorial(複数のラムダが.Net 4!_で導入されたことを_note) Linq(具体的にはLinq to Entity/Linq to Object - 期間は記事の年数によって異なります)。ハッピーコーディング – Smudge202

関連する問題