ContextMenu属性可以指定,只要你事先把菜单定义好

解决方案 »

  1.   

    用API和trackpopupmenu就可以任意弹出了
      

  2.   

    假设菜单项总共有(可能需要的所有菜单项)10个,分别为MenuItem1....MenuItem10;
    可以这样作:
    1.将几个具体情况用数字或字符串来代表,
    2.将你要生成的菜单分组,比如情况1需要,菜单项MenuItem1,MenuItem3,MenuItem5显示;
    则他们三个为一组,其他类似;分组的菜单项可作为数组;如,MenuItem[] mArr=new MenuItem[]{MenuItem1,MenuItem3,MenuItem5};将所有这些数组的定义放在一个方法中;
    给这个方法传入的参数就是代表具体情况的数字或是字符串;里面用switch(参数){case X:break;}来生成具体情况的菜单数组,然后返回这个数组;在给控件添加的时候定义
    Menu.Items.add(调用那个方法,传入代表情况的数字或是字符串,返回菜单数组)
    ContextMenu=Menu;
    这样就可以了。
      

  3.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    System.Drawing.Point a = new Point(10,40); //坐标
    contextMenu1.Show(this,a);
    }