Member 13275563 Ответов: 2

Как использовать код с помощью прямого сочетания клавиш на кнопке


Я хочу использовать сочетание клавиш для кнопки в моем приложении winform.
например, "ctrl S" для кнопки поиска

Что я уже пробовал:

я уже использовал ..
если ((например.Управление &&усилителя; электронные.Данные KeyCode == Ключи.С))
{
btnSearch.Сосредоточить();
}
..в этом случае ,когда я нажимаю кнопку ctrl S + enter ..тогда он работает,но я не хочу нажимать клавишу enter после нажатия enter, я хочу использовать только ctrl S, и он должен работать.пожалуйста, скажите мне решение для этого

2 Ответов

Рейтинг:
2

OriginalGriff

Во - первых, CTRL+S не должен быть "поиском" - Соглашение Windows для CTRL+S-это "сохранить", и менять его местами-плохая идея- это сбивает пользователей с толку. Соглашение для "поиска" - CTRL+F или F3

Самый простой способ добавить ярлык-использовать конструктор: выделите кнопку и посмотрите на панель свойств. Выберите свойство Text и добавьте амперсанд перед буквой, которую вы хотите использовать: "&Save" установит ALT+S в качестве ярлыка.
К сожалению, это работает только для комбинаций клавиш ALT+.

Для клавиши CTRL+вам нужно сделать две вещи:
1) Установите для свойства Form.KeyPreview значение true.
2) Переопределить ProcessCmdKey:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
    KeyEventArgs e = new KeyEventArgs(keyData);
    if (e.Control && e.KeyCode == Keys.F)
        {
        DoSearch();  // Your method here.
        return true; // Handled - prevent it being passed down the chain as well.
        }
    return base.ProcessCmdKey(ref msg, keyData);
    }


Member 13275563

хорошо, спасибо..
но в коде
что это за метод?.....С dosearch();

Member 13275563

я еще не использовал для этого никакого метода..

OriginalGriff

:вздыхать:
Напишите метод для выполнения поиска.
Назовите его "DoSearch" и вызовите его из ProcessCmdKey и вашей кнопки.

Вы не должны делать много в методах обработчика событий, кроме вызова публичных / частных методов для выполнения фактической работы - так проще повторно использовать код и "очищать" код обработчика.

Рейтинг:
0

Hermann Jung

Добавьте ContextMenuStrip (ctxFrom) с помощью ToolStripMenuItem (miFind) с помощью formdesigner.
Использование сетки, чтобы установить miFind свойство ShortcutKeys и нажмите кнопку-делегатом EventHandler (вызов поиска).
Установите для формы ContextMenuStrip-property значение ctxForm.