2016-10-14 1 views
0

私はまったく新しいものです。 I入力「間違った」ユーザ名とパスワードは、それが示したときに何らかの理由で私のログイン資格情報(ループのため)としての配列

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     string[] usernames = { "user1", "user2" }; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      for (int i = 0; i <= usernames.Length; i++) 
      { 
       if (textBox1.Text == usernames[i] && textBox2.Text == "password") 
       { 
        Form2 frm = new Form2(); 
        frm.Show(); 
        this.Hide(); 
        break; 
       } 
       else 
       { 
        textBox1.Clear(); 
        textBox2.Clear(); 
        textBox1.Text = "Wrong credentials!"; 
       } 

      } 
     } 

if (textBox1.Text == usernames[i] && textBox2.Text == "password") 

An unhandled exception of type 'System.IndexOutOfRangeException' occurred in WindowsFormsApplication2.exe 

があるならとにかく私はだからここに私の現在のコードだ君たちは少し私を助けることを願っこれをコード化するより良い方法です(ずっと簡単です)。あなた自身のコードを投稿するのをためらってください。私は配列を使ってログインフォームが必要です!本当にありがとう!

+1

使用のデバッグを試してみて、あなたは 'I <= usernames.Length'を書いているので、 – mybirthname

+2

は論理的には、とき'私は= usernames.Length'何が起こるかを歩くなぜあなたが表示されます。 – Rob

答えて

1

すべてのユーザーを確認しようとします。あなたは2を持っているので2回繰り返すべきですが、いいえです。あなたは

for (int i = 0; i <= usernames.Length; i++) 
      {...} 

.LENGTHを使用するときにユーザ名を持っていないので、それは2

のために1 別のために0 別のために長さ= 2 1のために3回実行[2](それ0で始まる)、アクセスして存在しないインデックスを作成しようとしているため、エラーが発生します。

はこれを試してみてください。

for (int i = 0; i < usernames.Length; i++) 
{...} 

は2回だけを実行します。 .lengthを使用している場合は常にthis(i < array.length)を使用してください。

この

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     string[] usernames = { "user1", "user2" }; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      bool wasFound = false; 
      for (int i = 0; i < usernames.Length; i++) 
       if (textBox1.Text == usernames[i] && textBox2.Text == "password") 
       { 
        wasFound = true; 
        break; 
       } 

      if (wasFound) 
      { 
       Form2 frm = new Form2(); 
       frm.Show(); 
       this.Hide(); 
      } 
      else 
      { 
       textBox1.Clear(); 
       textBox2.Clear(); 
       textBox1.Text = "Wrong credentials!"; 
      } 

     } 
    } 
} 
+0

大変です!もうエラーは出ません!しかし、私はuser2&パスワードをしようとすると、私は間違った資格情報を言う。私は何が欠けていますか?早い返信、ありがとう!ありがとう! –

+0

しばらくお待ちください。 –

+0

リラックスしてください。私は...私はそれを見てみましょう:)あなたの位置にかつて –

関連する問題