从C#中的子上下文菜单项访问时,源控件为null

我正在尝试在从上下文菜单条单击子菜单项(颜色>红色)时更改按钮的颜色。

此代码附加到用户定义的按钮数量。 为了确定他们试图改变哪个按钮,我试图从子项到源控件,如:sender> owner工具条>所有者菜单>源代码控制。

我的代码:

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); } 

从我在谷歌上发现的,这似乎是一个错误。 这有什么变通方法吗?