родительское контекстное меню? - PullRequest
12 голосов
/ 26 августа 2009

Привет! Я добавил контекстное меню на ярлык (c #, winforms). мое контекстное меню содержит 3 дочерних элемента, и я хочу отображать текст метки при нажатии на любой из элементов контекстного меню.

заранее спасибо

Ответы [ 3 ]

22 голосов
/ 26 августа 2009

Элемент управления ContextMenuStrip имеет свойство SourceControl, которое будет содержать ссылку на элемент управления, открывший его. Вы можете использовать это для извлечения текста из элемента управления:

private void MenuStripItem_Click(object sender, EventArgs e)
{
    ToolStripItem item = (sender as ToolStripItem);
    if (item != null)
    {
        ContextMenuStrip owner = item.Owner as ContextMenuStrip;
        if (owner != null)
        {
            MessageBox.Show(owner.SourceControl.Text);
        }
    }
}

Если вместо ContextMenuStrip использовать ContextMenu, код должен выглядеть следующим образом:

private void menuItem1_Click(object sender, EventArgs e)
{
    MenuItem item = (sender as MenuItem);
    if (item != null)
    {
        ContextMenu owner = item.Parent as ContextMenu;
        if (owner != null)
        {
            MessageBox.Show(owner.SourceControl.Text);
        }
    }
}
1 голос
/ 29 декабря 2018

Лучшее в одной строке:

Control control = ((ContextMenuStrip)((ToolStripItem)sender).Owner).SourceControl;
0 голосов
/ 23 марта 2016

Получить имя родительского элемента контекстного меню MessageBox.Show (contextMenuStrip1.SourceControl.Name.ToString ());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...