Reputation: 18076
Is there a way to assign shortcut keys to the standard navigation ToolStrip Items in a BindingNavigator?
The items that get added using the .AddStandardItems method are of type ToolStripItem which doesn't have a ShortcutKeys property.
I tried to cast to ToolStripMenuItem , but it fails.
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;
}
I guess I could replace the toolstripitems with toolstripmenuitems one by one, but feel this is rather awkward.
Upvotes: 5
Views: 7082
Reputation: 353
Did you try adding "&" symbol in front of the button caption?
Text = "&Save"
Upvotes: 2
Reputation: 12319
You can listen for key commands and then raise the click of the appropriate ToolStripButton. Override the ProcessCmdKey
method in your form code:
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);
}
Upvotes: 12
Reputation: 437
You can override the AddStandardItems method and overload the ToolStripMenuItem's constructor to accept ToolStripItem as a parameter for easier creation of the items.
But it's still sort of "replacing the items one by one".
Upvotes: 0