2014-03-24 187 views
0
private void button1_Click(object sender, EventArgs e) 
    { 

     try 
     { 
      var sr = new System.IO.StreamReader("C:\\" + textBox1.Text + "\\login.txt"); 
      username = sr.ReadLine(); 
      password = sr.ReadLine(); 
      email = sr.ReadLine(); 
      sr.Close(); 
      if (username == textBox1.Text && password == passwordtextbox.Text) 
       MessageBox.Show("You are now successfully logged in."); 


      else 
      MessageBox.Show("Username or Password seems invalid, please use email to recover password/username"); 
      Form2 frm = new Form2(); 
      // if 
      frm.Show(); 
      //frm.Show(); 
      frm.mypass = password; 
      frm.myid = username; 




     } 
     catch(System.IO.DirectoryNotFoundException) 
     { 
      MessageBox.Show("Error, please correct username/pass or recover"); 


     } 
    } 

所以,我的問題是,窗體2這是RecoveryPassWord問題是/否,在用戶按壓是的,他們會提示輸入自己的電子郵件發送密碼,然後按否,將返回到主屏幕。但是,問題是,只有在密碼錯誤時纔會顯示「是/否」,但在密碼正確時纔會顯示。我應該如何解決它?有/沒有顯示窗口

我想什麼是把這些線路

Form2 frm = new Form2(); 
      // if 
      frm.Show(); 
      //frm.Show(); 
      frm.mypass = password; 
      frm.myid = username; 
if語句

,沒有工作,因爲它給我的錯誤無效表達人。我不知道還有什麼可以工作。如果你能幫忙,請做。謝謝。

+1

因此需要縮進。 –

回答

0

如果您是確保用戶名和密碼是否正確裝入你可以嘗試包裹「其他」的條款在大括號像這樣:

else { 
    MessageBox.Show("Username or Password seems invalid, please use email to recover password/username"); 
// ... 
} 
0

你可能只是缺少您的括號周圍,如果你的,如果{}其他{}。如果不使用大括號,則只有else之後的直接行將成爲if/else的一部分。所以你是Form2代碼將運行無論。

嘗試使用這樣的:

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     var sr = new System.IO.StreamReader("C:\\" + textBox1.Text + "\\login.txt"); 
     username = sr.ReadLine(); 
     password = sr.ReadLine(); 
     email = sr.ReadLine(); 

     sr.Close(); 

     if (username == textBox1.Text && password == passwordtextbox.Text) 
     { 
      MessageBox.Show("You are now successfully logged in."); 
     } 
     else 
     { 
      MessageBox.Show("Username or Password seems invalid, please use email to recover password/username"); 
      Form2 frm = new Form2(); 
      frm.Show(); 
      frm.mypass = password; 
      frm.myid = username; 
     } 
    } 
    catch(System.IO.DirectoryNotFoundException) 
    { 
     MessageBox.Show("Error, please correct username/pass or recover"); 
    } 
} 
2

這裏是你的代碼,來適當地縮進:

if (username == textBox1.Text && password == passwordtextbox.Text) 
    MessageBox.Show("You are now successfully logged in."); 
else 
    MessageBox.Show("Username or Password seems invalid, please use email to recover password/username"); 

Form2 frm = new Form2(); 
frm.Show(); 
frm.mypass = password; 
frm.myid = username; 

你需要花括號,以便將邏輯一起:

else 
{ 
    MessageBox.Show("Username or Password seems invalid, please use email to recover password/username"); 

    Form2 frm = new Form2(); 
    frm.Show(); 
    frm.mypass = password; 
    frm.myid = username; 
} 

我還建議用ShowDialog()替換Show(),以防止用戶進行互動第一個窗體打開,第二個窗體打開,並防止您的代碼繼續運行,並嘗試在用戶輸入密碼和用戶名之前獲取密碼和用戶名。

0

將「Else」用大括號括起來。

如果(用戶名== textBox1.Text & &密碼== passwordtextbox.Text) { MessageBox.Show( 「你現在登錄成功。」); }

else MessageBox.Show(「用戶名或密碼無效,請使用電子郵件恢復密碼/用戶名」 Form2 frm = new Form2(); // if frm.Show(); //frm.Show(); frm.mypass =密碼; frm.myid = username;
}

+0

非常感謝你們,花括號做的伎倆! – user1769881

+0

@ user1769881 - 問題是,你是否明白_爲什麼花括號這樣做? :P –

+0

哈哈不知道請告訴我,我想知道。 – user1769881

相關問題