Как в MenuStrip указать горячие клавиши (ShortcutKeys) так, чтобы они там там были чисто для вида, не блокируя события контролов?
В результате установки свойства ShortcutKeys горячая клавиша перехватывается и обрабатывается событием Click пункта этого меню, но не доходит до контрола, которому она предназначалась.
var f = new Form();
var tb = new TextBox();
tb.Parent = f;
tb.Text = "test text";
var menu = new MenuStrip();
var item = new ToolStripMenuItem("test");
var item2 = new ToolStripMenuItem("test");
item2.ShorcutKeys = Keys.Control | Keys.C;
item2.Click += (sender, e) => MessageBox.Show("ctrl + c");
item.DropDownItems.Add(item2);
menu.Items.Add(item);
menu.Parent = f;
f.MainMenuStrip = menu;
f.ShowDialog();
Если попытаться скопировать строку из TextBox, вместо этого будет вызван Click пункта меню.
Подскажите, пожалуйста, как решить эту проблему. Желательно без наследования формы (если это возможно).
Ответы (1 шт):
Автор решения: Antinet
→ Ссылка
Проблема решена:
item2.Enabled = false;
item.DropDownOpening += (sender, e) => item2.Enabled = true;
item.DropDownClosed += (sender, e) => item2.Enabled = false;