Если я правильно понимаю ваш вопрос, вы создаете элемент управления, который будет отображать кнопку, которую может нажать пользователь, и которая также будет связана с функциональной клавишей, которая должна вызывать ту же команду.
Я полагаю, что самый простой (хотя, возможно, немного "хакерский") способ сделать это - создать UserControl
, добавить элемент управления MenuStrip
в свой пользовательский элемент управления, добавить ToolStripMenuItem
для элемента управления MenuStrip
, настройте обработчик событий Click
и установите для свойства Visible
MenuStrip
значение false
. Также добавьте кнопку в пользовательский элемент управления и установите для нее обработчик события Click
. Пусть оба обработчика событий вызовут какой-либо метод для выполнения действия и, наконец, создадут свойство ShortcutKeys
, отражающее свойство ShortcutKeys
пункта меню:
public partial class FunctionButton : UserControl
{
public FunctionButton()
{
InitializeComponent();
}
private void MenuItem_Click(object sender, EventArgs e)
{
PerformCommand();
}
private void Button_Click(object sender, EventArgs e)
{
PerformCommand();
}
private void PerformCommand()
{
OnClick(EventArgs.Empty);
}
public Keys ShortcutKeys
{
get
{
return _menuItem.ShortcutKeys;
}
set
{
_menuItem.ShortcutKeys = value;
}
}
}
В моем примере обработчики событий щелчка просто вызовут событие Click
пользовательского элемента управления, чтобы потребитель мог присоединить обработчик события к этому событию и действовать на него.