Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C#: Переместить фокус с кнопки на форму

76K
11 августа 2012 года
t3rmin41
14 / / 26.02.2012
Пытаюсь написать простенький калькулятор на С# в Visual Studio 2010 и столкнулся с проблемой перемещения фокуса с кнопки на форму.

Вопрос: как переместить фокус с формы на кнопку, чтобы форма стала отвечать на ввод с клавиатуры?

Добавляю в конце каждого buttonX_Click this.Focus(); и ничего не происходит, если нажать на клавишу. Если в приложении убрать все кнопки, KeyPressed работает нормально. Очевидно, мне надо переместить фокус с нажатой кнопки на форму, но this.Focus(); с этим не справляется.
В Java / Netbeans я в конце каждого buttonClick писал this.requestFocus(); и всё отлично работало.
76K
11 августа 2012 года
t3rmin41
14 / / 26.02.2012
Update:

Нашёл work-around проблемы ввода цифр с клавиатуры : установка свойства формы KeyPreview = true

Тем не менее, необходимо чтобы при нажатии клавишы "Enter" в текстовом поле выдавал конечный результат. Как этого добиться, не нашёл, помощь приветствуется.
297
15 августа 2012 года
koodeer
1.2K / / 02.05.2009
Форма не является контролом, способным получать фокус. Поэтому если на форме имеются контролы, способные получать фокус, то они и будут перехватывать его. Именно на один из них и нужно устанавливать фокус.
Возможно, пригодится метод SelectNextControl.
76K
16 августа 2012 года
t3rmin41
14 / / 26.02.2012
Неудивительно, что мне Java больше нравится, чем C# :) Опять Мелкософт со своими закидонами.

Пришлось придумать work-around чтобы после каждого события (клик или ввод с клавиатуры) фокус перемещался на элемент формы "равно".

спасибо за разъяснение.
277
16 августа 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: t3rmin41
Неудивительно, что мне Java больше нравится, чем C# :) Опять Мелкософт со своими закидонами.


так зачем парить мозги себе и людям? пиши на java!
в калькуляторах принято фокус всегда переводить на поле ввода
ну и попробуй:

 
Код:
void PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
         {
            if (e.KeyData == Keys.Enter)
                   e.IsInputKey = true;
          }
76K
16 августа 2012 года
t3rmin41
14 / / 26.02.2012
Цитата: arrjj
Цитата: t3rmin41
Неудивительно, что мне Java больше нравится, чем C# :) Опять Мелкософт со своими закидонами.


так зачем парить мозги себе и людям? пиши на java!



столкнулся с такой проблемой, что *.jar файлы на некоторых PC не открываются, хотя JVM установлена. Пришлось написать на C#.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог