Текстовое поле не будет принимать более 1 символа, не исчезая в C #

1
private void btnClassNameA_Click(object sender, EventArgs e)
    {
        txtbClassNameA.Visible = true;
        txtbClassNameA.Focus();
    }

private void txtbClassNameA_KeyDown_1(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter) ;
        btnClassNameA.Text = txtbClassNameA.Text;
        txtbClassNameA.Visible = false;
    }

При нажатии кнопки появляется текстовое поле. Я не могу заставить его принимать более 1 символа за раз, не исчезая. Он должен исчезнуть, нажав клавишу ввода. Любая помощь будет принята с благодарностью!

  • 5
    Вам не хватает брекетов для вашего if?
  • 0
    У вас есть if (e.KeyCode == Keys.Enter) ; что означает, что когда ввод - это нажатие, ничего не выполняет. ; просто приводит к неоперации. Остальная часть кода выполняется всякий раз, когда нажимается любая клавиша, и, следовательно, текстовое поле исчезает. Вы, вероятно, намеревались обернуть их в фигурные скобки?
Показать ещё 1 комментарий
Теги:
textbox
enter
keycode

4 ответа

1
Лучший ответ

Ваш текущий код эквивалентен этому:

private void txtbClassNameA_KeyDown_1(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter) { } // does nothing, just evaluates the condition
    btnClassNameA.Text = txtbClassNameA.Text;
    txtbClassNameA.Visible = false;
}

Вы должны изменить его следующим образом:

private void txtbClassNameA_KeyDown_1(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
       btnClassNameA.Text = txtbClassNameA.Text;
       txtbClassNameA.Visible = false;
    }
}
  • 0
    Вы получили это - спасибо большое
1

Оператор if не отформатирован правильно. Попробуйте вот так:

if (e.KeyCode == Keys.Enter)
{
        btnClassNameA.Text = txtbClassNameA.Text;
        txtbClassNameA.Visible = false;
}
0

Кажется, у вас есть точка с запятой после вашего условного.

Сейчас он оценивает условное выражение, а затем переходит к обновлению текста и делает поле невидимым.

private void txtbClassNameA_KeyDown_1(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter) 
        {
            btnClassNameA.Text = txtbClassNameA.Text;
            txtbClassNameA.Visible = false;
        }
    }

Можете дать вам лучшие результаты.

  • 0
    Ага! Там мы идем - спасибо!
0
    private void txtbClassNameA_KeyDown_1(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            btnClassNameA.Text = txtbClassNameA.Text;
            txtbClassNameA.Visible = false;
        }
    }

Если это ваш фактический код, точка с запятой может отбросить вас. Попробуй это.

  • 1
    Новое, должно быть, было что-то маленькое;) Большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню