C#/VB.NET判断右键弹出菜单的来源控件,从哪个控件弹出来的?

有时候,为了提高性能和节约资源,我们会为多个控件,指定同一个右键/弹出菜单,这时,通常会产生一个需求: 判断当前的弹出菜单是从哪个控件上弹出来,也就是“是由哪个控件的右键点击触发的”,以便于做进一步的控制。

在.NET当中,实现起来是非常简单的,假设弹出菜单为 ContextMenuStrip1,则只需要在 该菜单的 Opening 事件进行判断处理即可。

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
    //取得来源控件的Name
    MessageBox.Show((sender as ContextMenuStrip).SourceControl.Name);
}