кнопка включения при условии длины текстового поля c#

#c# #winforms

Вопрос:

Я пытаюсь включить btnSubmit, основываясь на том, что длина TxtPswrd превышает 8. Я использую функцию проверки текстового поля, я в замешательстве, следует ли мне использовать функции проверки, проверки или изменения текста?

  private void BtnSignin_Click(object sender, EventArgs e)
    {
        // SqlConnection con = StartCon();
        foreach (Control c in this.Controls)
        {
            if (c is TextBox)
            {
                TextBox textBox = c as TextBox;
                if (textBox.Text != string.Empty)
                {
                    DataInserted(sender, e);
                }
                else
                {
                    MessageBox.Show("Fill All Fields", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    TxtID.Focus();
                    break;
                }
            }
        }
 

функция DataInserted:

 private void DataInserted(object sener, EventArgs e)
    {
        try
        {
            SqlConnection sqlConnection = StartCon();
            string AdminLookup = "Select count(*) from signin WHERE memid = '"   TxtID.Text   "' and adminpass='" TxtPswrd.Text "'";
            SqlCommand command = new SqlCommand(AdminLookup, sqlConnection);
            command.Parameters.Clear();
            command.Parameters.AddWithValue("@usr", TxtUsername.Text);
            command.Parameters.AddWithValue("@pwd", TxtPswrd.Text);
            
            if (command.ExecuteScalar().ToString() =="1")
            {
                SetValueForText1 =  TxtUsername.Text;
                new Thread(() => new PSP_Manager().ShowDialog()).Start();
                this.Close();
            }
            else
            {

                MessageBox.Show("Error Signing in", "Check Credentials", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        catch (SqlException sqlexception)
        {
            MessageBox.Show("Error", sqlexception.Message);
        }
        finally
        {
            StartCon().Close();
        }
    }
 

Я пытаюсь включить btnSubmit только тогда, когда TxtPswrd.length >= 8

помогите, пожалуйста. фильм

Комментарии:

1. где находится btnSubmit на рис ?

2. @AmitVerma моя ошибка, это поющая кнопка

Ответ №1:

Я бы использовал TextChanged:

 private void PasswordTextbox_TextChanged(object sender, EventArgs e){
  submitButton.Enabled = passwordTextbox.Text.Length >= 8;
}
 

потому что я бы хотел, чтобы кнопка отправки была включена, пока они все еще были сосредоточены в поле, как только они набрали 8 символов

В других новостях не пишите такие SQL-команды; см. http://Bobby-tables.com для чего..

..а также не храните пароли в открытом виде в базе данных; это является причиной http://haveibeenpwned.com должен существовать

Комментарии:

1. Спасибо за ответ, но это не сработало, я попытался немного подправить код, но ответа не последовало. Я вызвал метод в Form_Load событии, и кнопка осталась отключенной.

2. Я действительно ничего не могу сделать с сообщением об ошибке » это не сработало » — будьте более конкретны, пожалуйста. Вы бы не поместили этот код в качестве обработчика событий Form_Load, потому что это происходит только один раз за весь срок службы формы

3. @CaiusJard правильный ответ.»PasswordTextbox_TextChanged» это событие изменения текста, и оно сработает автоматически, вам не нужно вызывать его из form_load().

4. @UnknownReality чтобы прикрепить обработчик с измененным текстом к текстовому полю, дважды щелкните по нему в конструкторе форм, и появится представление кода с созданным обработчиком с измененным текстом, связанным и ожидающим, когда вы напишете код в

5. @CaiusJard это сработало, и вам нужно вызвать метод в form_load()