关于C#的弹出菜单解决方法

关于C#的弹出菜单
窗体上放contextMenuStrip1,设计菜单。

期望左键单击的时候弹出菜单,于是设计代码如下:

private void button4_Click(object sender, EventArgs e)
        {
            button4.Tag = 1;
            contextMenuStrip1.Show(button4, 0, button4.Height + 2);
            button4.Tag = 2;
        }

可是这三行代码是一气呵成的执行完了啊,我期望contextMenuStrip1.Show实现类似TrackPopupMenu的效果,即菜单不消失的话,不执行到button4.Tag = 2;这一行。

难道要完全用API来创建菜单显示菜单?难道这个需求很奇葩?

百思不得其解,期待各位帮助!

------解决方案--------------------
在contextMenuStrip1的Closed事件里面写button4.Tag = 2;
------解决方案--------------------
它有Closed和Closing事件,可以在这里设置tag
------解决方案--------------------

// 右键菜单 关闭之前发生
 private void cs_Closing(object sender, ToolStripDropDownClosingEventArgs e)
        {
            
        }

------解决方案--------------------
你都 show了  等 show结束了 才 继续 执行 下面的 
------解决方案--------------------
引用:
看来方便是相对的,某个方面方便了则可能带来不方便的地方。个人觉得提供个showdialog似乎是最合适的……

方便本来就是相对的
面向对象的编程中,很多时候可以不考虑过程,这就是方便的地方
但是你就是想对每个过程进行控制,就会变得不方便
不方便不代表不能实现,无非就是麻烦一点而已.