Добавление текста в текстовое поле с помощью 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
, Если вы пытались сказать это мне, спасибо!