Как в 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;
→ Ссылка