ContextMenuStrip SourceControl (ссылка на текущий элемент управления, в котором активировано контекстное меню) можно получить из ToolStripMenuItem , проверяя * 1007 Ссылка * OwnerItem и перемещение вверх по течению, пока ссылка OwnerItem
не станет равной null
, затем проверка значения Владелец , который ссылается на ContextMenuStrip
.
(К сожалению, ссылка SourceControl
доступна только в элементе управления ContextMenuStrip
).
Простой альтернативный метод - использование Field
, которое ссылается на Control
, где был активирован текущий ContextMenuStrip
(у вас может быть только один активный ContextMenuStrip
).
Ссылка на это поле, установленная при открытии ContextMenuStrip
- путем подписки на событие Opened()
- может быть доступна любому из ToolStripMenuItem
.
После этого для задания поля устанавливается значение null
, когда ContextMenuStrip
закрывается.
Пример :
(toolStripMenuItem
- это общее имя, оно должно быть установлено на фактическое имя элемента управления).
Control CurrentContextMenuOwner = null;
private void contextMenuStrip1_Opened(object sender, EventArgs e)
{
CurrentContextMenuOwner = (sender as ContextMenuStrip).SourceControl;
}
private void toolStripMenuItem_Click(object sender, EventArgs e)
{
CurrentContextMenuOwner.BackColor = Color.Blue;
//(...)
}
private void contextMenuStrip1_Closed(object sender, ToolStripDropDownClosedEventArgs e)
{
CurrentContextMenuOwner = null;
}