2013-02-28 2 views
4

Есть ли способ назначить клавиши быстрого доступа к стандартным элементам навигации ToolStrip в BindingNavigator?Как назначить клавиши быстрого доступа кнопкам на bindNavigator?

Элементы, которые добавляются с использованием метода .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; 


    } 

Я предполагаю, что я мог бы заменить toolstripitems с toolstripmenuitems один за другим, но считаю, что это довольно неудобно.

ответ

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

Yay ! Спасибо! –

0

Вы можете переопределить метод AddStandardItems и перегрузить конструктор ToolStripMenuItem, чтобы принять ToolStripItem в качестве параметра для упрощения создания элементов.

Но это все равно «замена предметов по одному».

+0

Есть ли способ, чтобы переопределить AddStandardItems и по-прежнему сохраняют путь текст позиции работает? На данный момент я не вижу, как переопределение лучше, чем просто не называть AddStandardItems - и добавление кнопок один за другим. В переопределении AddStandardItems мне нужно знать, как подключить кнопки до событий, где можно получить значки, и как сделать текст номера записи таким же образом –

+0

это, вероятно, не лучше, его можно использовать только повторно – Matus

2

ли вы попробовать добавить «&» символ перед надписи кнопки?

Text = "& Сохранить"

+0

Привет Ankit. Хорошая идея, но мне нужны другие ключи, кроме Alt. –

Смежные вопросы