2013-02-28 85 views
4

有沒有辦法將快捷鍵分配給BindingNavigator中的標準導航ToolStrip項目?如何將快捷鍵分配給bindingNavigator上的按鈕?

是開始使用.AddStandardItems方法添加的項目是不具有ShortcutKeys屬性類型的ToolStripItem的。

我試圖轉換到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,但是感覺這很尷尬。

回答

8

您可以監聽鍵命令,然後提升相應的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); 
} 
+0

耶!謝謝! – 2013-03-09 04:25:10

0

可以重寫AddStandardItems方法和重載ToolStripMenuItem的構造函數接受的ToolStripItem爲更容易創建項目的參數。

但它仍然有點「一個接一個地取代物品」。

+0

有沒有辦法覆蓋AddStandardItems和仍然保留的位置文本的工作方式?目前我不知道如何重寫比單純調用AddStandardItems更好 - 並逐個添加按鈕。在覆蓋AddStandardItems,我需要知道如何連接的按鈕到的事件,在那裏得到的圖標,以及如何使記錄號文的工作方式相同 – 2013-03-03 19:03:01

+0

它可能是沒有任何好轉,這只是重複使用 – Matus 2013-03-03 21:19:16

2

你嘗試在按鈕標題前加上「&」的象徵?

文本=「&保存」

+0

嗨Ankit。好主意,但我想要的其他鍵不是Alt。 – 2014-04-28 21:00:39

相關問題