Легко настроить горячую клавишу 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 для кнопки. Я полагаю, я мог бы расширить элемент управления кнопки, чтобы добавить поведение горячих клавиш управления. Похоже, должен быть более прямой подход.