Привязка горячих клавиш Ctrl к кнопкам Windows Forms - PullRequest
4 голосов
/ 23 июля 2010

Легко настроить горячую клавишу Alt для кнопки Windows Forms, добавив & перед символом горячей клавиши в текстовом свойстве кнопки.

Теперь мне нужно создать элемент управления примерно с 50 кнопками (не спрашивать), и желательно, чтобы у каждой из них была горячая клавиша, используя Ctrl горячие клавиши, а также Alt горячие клавиши. Кроме того, желательно, чтобы горячие клавиши Ctrl имитировали поведение горячих клавиш Alt , так как при нажатии кнопки Ctrl подчеркивания будут появляться на кнопках, чтобы указать горячую клавишу.

Я мог бы отлавливать ключевые события и пытаться имитировать поведение, но есть ли более простой способ сделать это? Возможно, это не проблема, но кнопки также должны генерироваться программно из определений, хранящихся в базе данных.

РЕДАКТИРОВАТЬ: Объясняя эту проблему немного дальше, проблема заключается не только в захвате клавиши управления, но в действительности в возможности отлова клавиши управления, а затем в возможности изменить отображение в кнопках для покажите пользователю, что такое горячая клавиша управления для этой кнопки.

Ниже приведена небольшая реклама для захвата клавиши управления и клавиши управления на уровне управления (хотя похоже, что для запуска OnKeyDown необходимо несколько дополнительных приемов):

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.Control)
        {
            // Show the hotkey on the buttons with ctrl hotkeys
        }
    }
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch (keyData)
        {
            case Keys.Control | Keys.C:
                // Execute the Ctrl + C button action
                btnControl_Click(this, null);
                return true;
            default:
                break;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

Можно ли на уровне управления изменить отображение кнопок, чтобы имитировать поведение горячих клавиш для отображения подчеркивания? Не похоже, что вы можете поместить форматирование в свойство Text кнопки.

Подход на уровне управления также более проблематичен, поскольку кнопки динамически генерируются во время выполнения. В идеале можно назначить горячую клавишу Alt или Ctrl для кнопки. Я полагаю, я мог бы расширить элемент управления кнопки, чтобы добавить поведение горячих клавиш управления. Похоже, должен быть более прямой подход.

Ответы [ 3 ]

2 голосов
/ 23 июля 2010

Проверьте вопрос переполнения стека Горячая клавиша (не глобальная) в Windows Forms .NET .

2 голосов
/ 23 июля 2010

Нет такого простого метода, как использование '&', но Встраивание ускорителей клавиатуры в приложения .NET Windows Forms довольно хорошо объясняет, как это сделать.

0 голосов
/ 02 июня 2011

Полноту см. В теме форума MSDN по теме Можно ли установить горячую клавишу ctrl для кнопки winforms и получить то же поведение, что и для горячей клавиши alt? .

Отображение подчеркивания для горячих клавиш управления требует настройки кнопки управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...