5

有没有办法将快捷键分配给 BindingNavigator 中的标准导航 ToolStrip 项?

使用 .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一个一个地替换toolstripitems,但是觉得这很尴尬。

4

3 回答 3

12

您可以侦听键盘命令,然后单击相应的 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);
}
于 2013-03-08T22:46:57.100 回答
2

Did you try adding "&" symbol in front of the button caption?

Text = "&Save"

于 2014-04-28T10:00:51.990 回答
0

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

但这仍然是“一件一件更换物品”。

于 2013-03-03T14:45:33.583 回答