日期:2014-05-18  浏览次数:20830 次

如何确定ContextMenuStrip是在哪个控件上打开的?
程序中动态生成了若干个pictureBox,他们同为一个pictureBox[]的元素,并且他们的ContextMenuStrip指向同一个ContextMenuStrip实例,如何判断是哪个pictureBox元素打开的ContextMenuStrip呢?

------解决方案--------------------
使用ContextMenuStrip.SourceControl 属性
------解决方案--------------------
同楼上,就楼主的要求,可以这样


Control c = contextMenuStrip1.SourceControl;
if (c.GetType().Name == "PictureBox ")
{
MessageBox.Show(((PictureBox)c).Name);
}
------解决方案--------------------
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
ContextMenuStrip menu = (ContextMenuStrip)sender;
for (int i = 0; i < pictureBox.Count; i++)
{
if ((PictureBox)menu.SourceControl == pictureBox[i])
{
// 是pictureBox[i]
break;
}

}


}