2014-02-05 3 views
1

У меня есть форма для окон, над которыми я работаю. У меня есть кнопка в форме окна, если пользователь нажимает кнопку, появляется другое окно с текстовым полем и кнопка с просьбой ввести пароль. Если пользователь правильно вводит пароль, он откроет новую форму под названием AdminPage, однако если пользователь вводит неверный пароль, появляется сообщение с предложением повторить попытку. Проблема в том, что я не могу открыть AdminPage, даже если я наберу правильный пароль. Если кто-то может вести меня в моих ошибках, которые были бы большое спасибоПароль на кнопке C#

private void EnterBtn_Click(object sender, EventArgs e) 
    { 
     if (PsswdTxt.Text == ("BuildStore")) 
     { 
      AdminPage m = new AdminPage(); 
      m.Show(); 
      this.Close(); 
     } 
      else 

       MessageBox.Show("Please Try again"); 

     } 
    } 
} 
+0

После нажатия кнопки, приложение закрывается, если пароль верен? –

+0

Нет ящика сообщений и говорит, пожалуйста, попробуйте еще раз – RustyHamster

ответ

1

Может быть, что вы печатаете Buildstore или buildStore? Сравнение чувствительно к регистру - если вы хотите, чтобы соответствовать слово независимо от того, если вы можете использовать String.Compare или вы можете преобразовать оба значения в верхний/нижний:

if (string.Compare(PsswdTxt.Text,"BuildStore" ,true) == 0) // true signifies to ignore case 
{ 
    AdminPage m = new AdminPage(); 
    m.Show(); 
    this.Visible = false; 
} 

или ...

if (PsswdTxt.Text.ToUpper() == "BuildStore".ToUpper()) 
    { 
     AdminPage m = new AdminPage(); 
     m.Show(); 
     this.Visible = false; 
    } 
+1

Могу ли я добавить, что игнорирование случая в проверке пароля - плохая идея? – germi

+0

Спасибо NDJ, который работает с удовольствием – RustyHamster

+0

Добро пожаловать. @germi - Я согласен, хотя я не знаю бизнес-требований OPs, и я просто подчеркиваю исправление, если это нечувствительное к регистру сравнение. – NDJ

0

попробовать этот код ..

+0

Это дает мне те же результаты «Пожалуйста, попробуйте еще раз» – RustyHamster

+0

Вы пытались отладить свой код? Добавьте часы на 'PasswdTxt.Text' и на' string.Equals (PsswdTxt.Text, "BuildStore") '. PasswdTxt.Text должен быть равен BuildStore и string.Equals (PsswdTxt.Text, «BuildStore») должен быть правдой, попробуйте отладить код и проверить оба раза –

0

Вы следует попробовать ShowDialog вместо Show. Возможно, это проявляется за другой формой.

1

Я хотел бы создать Логин»формы для этого Это,., Чтобы контролировать определенные Funtions для каждой учетной записи пользователя Но.„Мы“не знаем, что вы программируете там

Вы можете использовать. Войти Форма либо когда приложение начинает или когда эта кнопка нажата (даже многими другими способами ...)

Хотя если ваш пароль всегда то же самое, вы можете попробовать это:. 1) Создать «Вход» формы, добавьте 2 текстовых поля и кнопку. 2) Код типа:

public partial class Form1 : Form 
{ 
    // Variable to create a new Form2 
    Form2 f2 = new Form2(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    // On Login Form Load... 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     btn_Login.Enabled = false; 
    } 

    // Login Button CLick 
    private void btn_Login_Click(object sender, EventArgs e) 
    { 
     // replace "myUserName" with your User Name and "myPassword" with your password 

      if (txtb_UserName.Text == "myUserName" && txtb_Password.Text == "myPassword") 
      { 
       // Shows the protected form 
       f2.Show(); 
      } 

       // If the Username or Password is not correct; A messageBox will be shows (or 2 if both are incorrect) 
       // This can be perfected. But im just showing the basic examples. 
      else if (txtb_UserName.Text != "myUserName") 
      { 
       // Sends an error message 
       MessageBox.Show("Incorrect UserName"); 
      } 

      else if (txtb_Password.Text != "myPassword") 
      { 
       // Sends an error message 
       MessageBox.Show("Incorrect Password"); 
      } 
     } 

    // Add this code to enable or disable the login button. 
    // this will happen in both textBoxes (on TextChange Event). 
    private void check_Text_Content() 
    { 
     if(txtb_UserName.Text != string.Empty && txtb_Password.Text != string.Empty) 
     { 
      btn_Login.Enabled = true; 
     } 

     else if (txtb_UserName.Text == string.Empty) 
     { 
      btn_Login.Enabled = false; 
     } 

     else if (txtb_Password.Text == string.Empty) 
     { 
      btn_Login.Enabled = false; 
     } 
    } 

    // Now as you can see both textBoxes will check if their text is empty or not. 
    // If it's empty; The login Buttton will be disabled. Else; will be Enabled. 

    private void txtb_UserName_TextChanged(object sender, EventArgs e) 
    { 
     check_Text_Content(); 
    } 

    private void txtb_Password_TextChanged(object sender, EventArgs e) 
    { 
     check_Text_Content(); 
    } 
} 

}

Если вы хотите настроить свой пароль только один раз в то время я бы использовать MS Access или SQL базы данных. (И форма для их настройки). Не пытаясь обескуражить вас или что-то еще; но если вы не знаете, как создавать и управлять базами данных SQL/MS Access; Я рекомендую вам искать Google. В Интернете есть множество учебных пособий. Я не показываю вам, как это сделать с SQL или Access DB; потому что это будет огромный шаг за шагом учебник. Надеюсь, это сработает для вас.

+0

Спасибо за это. Я инженер по ИТ-поддержке и не делал много C#, поэтому в свободное время я пытался программировать, комментарии, подобные вашим, очень конструктивны.Спасибо – RustyHamster

+0

Не беспокойтесь. Рад, что смог помочь. – Richard

+1

Кстати: я нашел неплохие видеоуроки. Я надеюсь, что этот канал YouTube поможет вам с SQL. (И, возможно, что-то еще) http://www.youtube.com/user/ProgrammingKnowledge?feature=watch С наилучшими пожеланиями; Richard – Richard

Смежные вопросы