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

Ваш аккаунт

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

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

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

Как связать кнопку приложения с клавишей клавиатуры?

50K
16 ноября 2009 года
Bazilisk
11 / / 04.11.2009
Извиняюсь, не очень у меня с английским и никак не пойму как в Visual Studio 2005 настроить свойства кнопки, так чтобы ее нажатие вызывалось с клавиатуры.
Например, кнопка 1
Нужно, чтобы если я нажал на клавиатуре 1 - то кнопка с надписью 1 сработала бы словно ее нажали мышкой
288
16 ноября 2009 года
nikitozz
1.2K / / 09.03.2007
Просто вызвать обработчик нажатия этой кнопки. Ну или вариант поизвращенней:
 
Код:
::PostMessage(this->GetSafeHwnd(), WM_COMMAND, IDC_BUTTON1 | (BN_CLICKED << 16), (LPARAM)GetDlgItem(IDC_BUTTON1)->GetSafeHwnd());
50K
17 ноября 2009 года
Bazilisk
11 / / 04.11.2009
Извиняюсь за глупость природную, но нельзя ли как в Маковском Xcode в меню кнопки программы просто задать связанную с этой кнопкой кнопку клавиатуры?

На С# пытаюсь работать..
297
17 ноября 2009 года
koodeer
1.2K / / 02.05.2009
Цитата: Bazilisk
Извиняюсь за глупость природную, но нельзя ли как в Маковском Xcode в меню кнопки программы просто задать связанную с этой кнопкой кнопку клавиатуры?


Можно сделать так: устанавливаем свойство KeyPreview формы в True (таким образом форма будет перехватывать нажатия клавиш), и делаем обработчик события формы KeyDown или KeyPress.

Цитата: Bazilisk
На С# пытаюсь работать..


Вот только раздел форума почему-то выбран не тот.

50K
18 ноября 2009 года
Bazilisk
11 / / 04.11.2009
Извиняюсь еще раз. Но мозг рушится все новыми бедами и заботами :)

Оказалось, что keypress работает только для выделенного элемента. например для окошка textbox.
Когда я мышкой нажимаю какую то кнопку на форме - то похоже фокус смещается и событие keypress не обрабатывается.
Неужели нет простого способа привязать "горячую клавишу" к кнопке формы?
Просто у меня 50 кнопок и у каждой прописывать Keydown или еще что невероятно геморойно. Да и неправильно как то....


Спасайте!
297
19 ноября 2009 года
koodeer
1.2K / / 02.05.2009
Цитата: Bazilisk
Оказалось, что keypress работает только для выделенного элемента. например для окошка textbox.
Когда я мышкой нажимаю какую то кнопку на форме - то похоже фокус смещается и событие keypress не обрабатывается.
Неужели нет простого способа привязать "горячую клавишу" к кнопке формы?
Просто у меня 50 кнопок и у каждой прописывать Keydown или еще что невероятно геморойно. Да и неправильно как то....


Я имею в виду событие формы, а не элементов на ней.
Делаем что-то вроде:

 
Код:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.D1)
        button1_Click(sender, e); // или пишем здесь нужный код
    if (e.KeyCode == Keys.D2)
        button2_Click(sender, e);
}

Конечно, можно применить switch вместо if.
Повторюсь, что свойство формы KeyPreview необходимо установить в True.

Если я не ошибаюсь, только у компонента MenuItem есть свойство Shortcut, позволяющее задать горячие клавиши.
50K
21 ноября 2009 года
Bazilisk
11 / / 04.11.2009
Спасибо! Сорри, просмотрел.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог