解决方案 »

  1.   

    在contextMenuStrip1的Closed事件里面写button4.Tag = 2;
      

  2.   

    1楼是动态创建菜单的2楼的办法我也想过,实在没办法的话也许只能这样了。但这样终归不方便。TrackPopupMenu则是类似showdialog的效果。
      

  3.   

    它有Closed和Closing事件,可以在这里设置tag
      

  4.   


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

  5.   

    你都 show了  等 show结束了 才 继续 执行 下面的 
      

  6.   

    Closed等事件是最后不得已的办法,感谢各位。回复6楼:show并不会让代码暂停,我希望是showdialog的效果。TrackPopupMenu就会暂停
      

  7.   

    这需求本来就很奇葩.
    如果你是弹出的窗体,在关闭窗体时要从窗体中返回一些操作,那么需要用showdialog
    而菜单,本身就在当前窗体中,你要执行什么特定操作,等按下菜单对应选项的时候执行就好了啊
    为什么菜单关闭时还要再继续跑回click事件中?如果说菜单关闭时要统一执行特定方法,菜单有close事件,你放在事件里执行就行了.
      

  8.   

    在.NET之前,弹出菜单不都是用TrackPopupMenu的吗?而TrackPopupMenu就会暂停,直到菜单消失,所以我不觉得需求奇葩。在.NET之前,比如我要捕捉在菜单上的右键,则需要安装鼠标钩子,当我仅仅期望在弹出某个菜单的时候钩子才有效,那么流程就是1、安装钩子2、TrackPopupMenu显示菜单3、卸载钩子。这里仅仅是举例说明这个功能有其合理性。
      

  9.   

    不要老提.net之前
    在.net之前,你放个textbox在窗体上,还要在后台建立个变量,然后将变量绑定到textbox上去
    烦不烦?
    既然想用.net,就得适应.net的方便之处,
    不会因为弹出了个菜单就阻塞了主线程的执行.
      

  10.   

    看来方便是相对的,某个方面方便了则可能带来不方便的地方。个人觉得提供个showdialog似乎是最合适的……
      

  11.   

    窗体弹出菜单
    private void 打开自窗体ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();//创建窗体对象
                f.MdiParent = this;//设置父窗体属性
                f.Show();//显示窗体
                f.Resize += //为窗体添加事件
                    new EventHandler(f_Resize);
            }
    void f_Resize(object sender, EventArgs e)
            {
                Form2 f = (Form2)sender;//得到窗体对象
                ToolStripMenuItem item = new ToolStripMenuItem();//创建菜单项
                for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//遍历窗体菜单项集合
                {
                    item.DropDownItems.Add(//添加菜单项
                        f.contextMenuStrip2.Items[i]);
                }
                this.contextMenuStrip1.Items.AddRange(//向主窗体中添加菜单项集合
                    new System.Windows.Forms.ToolStripItem[] {
                item});
            }