Winforms 如何为bindingNavigator上的按钮指定快捷键?

Winforms 如何为bindingNavigator上的按钮指定快捷键?,winforms,keyboard-shortcuts,bindingnavigator,Winforms,Keyboard Shortcuts,Bindingnavigator,有没有办法为BindingNavigator中的标准导航工具条项指定快捷键 使用.AddStandardItems方法添加的项的类型为ToolStripItem,它没有ShortcutKeys属性 我试图强制转换为ToolStripMenuItem,但失败了 public void ConfigureMyNavigator() { // Adds ToolStripItems which don't support shortcut keys

有没有办法为BindingNavigator中的标准导航工具条项指定快捷键

使用.AddStandardItems方法添加的项的类型为ToolStripItem,它没有ShortcutKeys属性

我试图强制转换为ToolStripMenuItem,但失败了

 public void ConfigureMyNavigator()
    {
               // Adds ToolStripItems which don't support shortcut keys           
                m_navigator.AddStandardItems();

                // Adds a ToolStripMenuItem which can support a shortcut key
                var button = new ToolStripMenuItem
                {
                    Size = new Size(0, 0),
                    Text = "Save",
                    ShortcutKeys = (Keys)Shortcut.CtrlS,
                    ToolTipText = "Press Ctrl+S to save"
                };
                button.Click += tsmi_Click;

                m_navigator.Items.Add(button);

                //   This fails with invalid cast exception
                ((ToolStripMenuItem)m_navigator.Items[1]).ShortcutKeys = (Keys)Shortcut.AltLeftArrow;


    }

我想我可以将toolstripmenuitems逐个替换为toolstripmenuitems,但我觉得这相当尴尬。

您可以覆盖AddStandardItems方法并重载ToolStripMenuItem的构造函数,以接受ToolStripItem作为参数,以便更轻松地创建项


但它仍然是一种“逐个替换项目”的方式。

您可以监听关键命令,然后点击相应的ToolStripButton。覆盖表单代码中的
ProcessCmdKey
方法:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch (keyData)
    {
        case (Keys.Alt | Keys.Left):
            m_navigator.Items[1].PerformClick();
            break;
        case (Keys.Alt | Keys.Right):
            m_navigator.Items[6].PerformClick();
            break;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}
您是否尝试在按钮标题前添加“&”符号

Text=“&保存”


是否有方法覆盖AddStandardItems并保留位置文本的工作方式?目前,我看不出覆盖比不调用AddStandardItems和逐个添加按钮有多好。在重写AddStandardItems时,我需要知道如何将按钮与事件挂钩,从何处获取图标,以及如何使记录编号文本以相同的方式工作。这可能不是更好,只是可重用而已。好主意,但我想要Alt以外的其他键。好主意,但不起作用