Я портирую Windows Forms GUI, сделанный contextmenustrip, в код contextmenu в классе. (Я делаю «самосодержащий класс MS Chart», поэтому каждая создаваемая мной диаграмма может получить свое собственное контекстное меню.)
Вот пример кода с двумя пунктами меню и разделительной полосой:
ContextMenu mymenustrip = new ContextMenu();
zoomOutToolStripMenuItem = new MenuItem("Zoom Out",
new EventHandler(chart_ToolStripMenuItem_zoomOutClick));
separator1ToolStripMenuItem = new MenuItem("-");
mymenustrip.MenuItems.Add(zoomOutToolStripMenuItem);
и меню работают, легко копируются из журнала событий графического интерфейса c. И есть много онлайн-примеров, помогающих в этом. Но как мне поймать событие открытия меню ()? Исходное событие открытия () переформатирует меню, и я хочу сохранить эту функциональность. Я возился с этим:
mymenustrip.Popup += new EventHandler (chart_contextMenuStrip1_Opening)
...
, но этого, конечно, недостаточно. Вот текущая ошибка: «Ошибка CS0123 Нет перегрузки для« chart_contextMenuStrip1_Opening »соответствует делегату« EventHandler »». И это вступительное событие, сделанное VS GUI:
private void chart_contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
if (zoomingNow)
{
e.Cancel = true;
return;
}
...
}
Очевидно, я что-то упустил. Но что?