【问题标题】:How do I assign shortcut keys to buttons on the bindingNavigator?如何为 bindingNavigator 上的按钮分配快捷键?
【发布时间】:2013-02-28 03:32:31
【问题描述】:

有没有办法为 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,但是觉得这很尴尬。

【问题讨论】:

    标签: winforms keyboard-shortcuts bindingnavigator


    【解决方案1】:

    您可以监听键盘命令,然后点击相应的 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);
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试在按钮标题前添加“&”符号?

      Text = "&保存"

      【讨论】:

      • 嗨 Ankit。好主意,但我想要 Alt 以外的其他键。
      【解决方案3】:

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

      但它仍然是“一件一件替换”。

      【讨论】:

      • 有没有办法覆盖 AddStandardItems 并仍然保留位置文本的工作方式?目前,我看不出重写比简单地不调用 AddStandardItems 并一一添加按钮更好。在覆盖 AddStandardItems 时,我需要知道如何将按钮连接到事件、从何处获取图标以及如何使记录编号文本以相同的方式工作
      • 它可能没有更好,它只是可重复使用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      相关资源
      最近更新 更多