Я пытаюсь изменить цвет кнопки, когда они нажимают на элемент подменю (цвета> красный) из полосы контекстного меню.
Этот код прикрепляется к определенному пользователем количеству кнопок. Чтобы выяснить, какую кнопку они пытаются изменить, я пытаюсь перейти от подэлемента к элементу управления исходным кодом, например: отправитель > полоса инструментов владельца > меню владельца > элемент управления исходным кодом.
Мой код:
private void redToolStripMenuItem_Click(object sender, EventArgs e)
{
ToolStripItem subItem = sender as ToolStripItem;
if (subItem == null) return;
ToolStripItem mainItem = subItem.OwnerItem as ToolStripItem;
if (mainItem == null) return;
ContextMenuStrip menuStrip = mainItem.Owner as ContextMenuStrip;
if (menuStrip == null) return;
DataGridView dataGridView = menuStrip.SourceControl as DataGridView;
if (dataGridView == null) return; //null here
MessageBox.Show(dataGridView.Name);
}
Судя по тому, что я нашел в гугле, это ошибка. Есть ли обходные пути для этого?
Owner
становитсяContextMenuStrip
, а его свойствоSourceControl
имеет ListView, но когда щелкается подменю (второго уровня),Owner
является родительским меню (верхним). уровень), и даже когда я подхожу кContextMenuStrip
, егоSourceControl
равно нулю. - person Damn Vegetables   schedule 08.02.2017