Добавление текста в текстовое поле с помощью KeyEventArgs. C#

Я не могу заставить эту часть моего кода работать. Целью этого фрагмента кода является добавление нумерованного списка каждый раз, когда пользователь нажимает "ENTER". Вот и пример того, что я имею в виду.

0) 10100 [Пользователь нажимает клавишу ВВОД]

1) (курсор находится здесь)

Вот код, который у меня есть. meowbox многострочное текстовое поле

protected override void OnKeyDown(KeyEventArgs e)
{

    if (e.KeyCode == Keys.Enter)
    {

        meowbox.Text += i + ")";
        ++i;
    }

    base.OnKeyDown(e);
}

2 ответа

Решение

Похоже, что вы, возможно, не помещаете свой код в правильный метод. Один из простых способов сделать это - перейти к конструктору форм, выбрать текстовое поле, перейти в окно "Свойства", щелкнуть значок молнии (для методов), а затем дважды щелкните значок KeyDown метод. Это создаст обработчик события и подключит его к текстовому полю.

Другая проблема, с которой вы можете столкнуться (как только вы ее правильно подключите), заключается в том, что текстовое поле продолжает обрабатывать нажатие клавиши, даже если вы обрабатываете ее самостоятельно. Чтобы обойти это, вы можете установить SuppressKeyPress в true,

Например:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        textBox1.Text += Environment.NewLine + i++ + ") ";
        textBox1.SelectionStart = textBox1.Text.Length;
        e.SuppressKeyPress = true;
    }
}

Я понял! Спасибо вам, ребята! что я должен был сделать meowbox.KeyDown += new KeyEventHandler, Если вы пытались сказать это мне, спасибо!

Другие вопросы по тегам