C#: Переместить фокус с кнопки на форму
Вопрос: как переместить фокус с формы на кнопку, чтобы форма стала отвечать на ввод с клавиатуры?
Добавляю в конце каждого buttonX_Click this.Focus(); и ничего не происходит, если нажать на клавишу. Если в приложении убрать все кнопки, KeyPressed работает нормально. Очевидно, мне надо переместить фокус с нажатой кнопки на форму, но this.Focus(); с этим не справляется.
В Java / Netbeans я в конце каждого buttonClick писал this.requestFocus(); и всё отлично работало.
Нашёл work-around проблемы ввода цифр с клавиатуры : установка свойства формы KeyPreview = true
Тем не менее, необходимо чтобы при нажатии клавишы "Enter" в текстовом поле выдавал конечный результат. Как этого добиться, не нашёл, помощь приветствуется.
Возможно, пригодится метод SelectNextControl.
Пришлось придумать work-around чтобы после каждого события (клик или ввод с клавиатуры) фокус перемещался на элемент формы "равно".
спасибо за разъяснение.
Цитата: t3rmin41
Неудивительно, что мне Java больше нравится, чем C# :) Опять Мелкософт со своими закидонами.
так зачем парить мозги себе и людям? пиши на java!
в калькуляторах принято фокус всегда переводить на поле ввода
ну и попробуй:
Код:
void PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyData == Keys.Enter)
e.IsInputKey = true;
}
{
if (e.KeyData == Keys.Enter)
e.IsInputKey = true;
}