例如在窗体里放置一个按钮 
当点击按钮(button)后弹出一个菜单(menu)
然后通过选择菜单上对应的项完成不同的事件这样的功能如何实现请路过的朋友指点一下 分不够再加小弟谢过了

解决方案 »

  1.   

    工具栏的按钮风格调整为 dropdownmenu 在指定一个contextMenu就行了
      

  2.   

    (button)后弹出一个菜单(menu)你给button添加一个menu不行啊?
      

  3.   

    使用右键的弹出菜单即可按Button,启动这个菜单
      

  4.   

    contextMenuStrip1.Show(Control.MousePosition);
      

  5.   

    在click事件中,当单击按钮的时候,弹出菜单
      

  6.   

    hbxtlhx(平民百姓-自已动手,丰衣足食)contextMenuStrip1.Show(Control.MousePosition);出现如下提示:重载"show"方法未获取“1”参数
      

  7.   

    你如果是VS2005,应该使用ContextMenuStrip,而不是ContextMenu.
      

  8.   

    hbxtlhx(平民百姓-自已动手,丰衣足食)我用的是vs2003 理论上应该没问题啊
      

  9.   

    在vs2003里 this.contextMenu1.Show(Control.MousePosition); 行不通 出现如下提示:
    重载"show"方法未获取“1”参数
      

  10.   

    this.contextMenu1(this, this.MousePosition);
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  11.   

    谢谢楼上兄弟们this.contextMenu1(this, this.MousePosition);不行
      

  12.   

    tryprivate void button1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(e.Button == MouseButtons.Left)
    {
    this.contextMenu1.Show(button1,new Point(e.X,e.Y));
    }
    }
      

  13.   

    http://www.abab123.com/bbs/down.asp?html=561062
    在这里你可以找到你想要的答案
      

  14.   

    lxcnn(过客) 的方法正确谢谢了如果在按钮(button1)上加一个向下小三角 当但击这个三角时就会弹出菜单(contextMenu1)
    这样的功能如何实现 解决了这个问题马上结帖 提出下一个问题 
    如何实现动态菜单(就是让菜单动态显示数据库里的纪录)
      

  15.   

    如果没有好的方法,你可以变通一下自己做个控件:一个button,右边紧挨者再加一个有个三角形标记的小按钮,小按钮单击时弹出菜单,主按钮单击时做另外的事情
      

  16.   

    如果是2003可以按如下操作:
    private void button1_Click(object sender, EventArgs e)
    {
    ContextMenu cm = new ContextMenu();
    cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
    cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
    cm.Show(this, this.PointToClient(Control.MousePosition));
    }
    private void menu_Click(object sender, EventArgs e)
    {
    MenuItem item = (MenuItem)sender;
    Console.WriteLine(item.Text);
    }
      

  17.   

    就是让菜单动态显示数据库里的纪录
    ----------------------
    这个也好说,从数据库中取出数据后使用Add方法一个个的添加菜单项就是了:
    private void button1_Click(object sender, EventArgs e)
    {
    ContextMenu cm = new ContextMenu();
    DataTable dataTable = getTable();
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
    cm.MenuItems.Add(dataTable.Rows[i]["Caption"].ToString(), new EventHandler(this.menu_Click));
    }
    cm.Show(this, this.PointToClient(Control.MousePosition));
    }
    private void menu_Click(object sender, EventArgs e)
    {
    MenuItem item = (MenuItem)sender;
    Console.WriteLine(item.Text);
    }
      

  18.   

    contextMenuStrip1.Show(btnSearch, btnSearch.Width, 0);
      

  19.   

    恩 谢谢 hbxtlhx(平民百姓-自已动手,丰衣足食) 请问如果在按钮(button1)上加一个向下小三角 当但击这个三角时就会弹出菜单(contextMenu1)
    这样的功能如何实现 能否给一些代码提示一下谢谢!!!
      

  20.   

    上加一个向下小三角
    --------------------------
    是什么意思,是自己画出的一个小三角,还是放上了一个小控件呢?如果是画出的一个小三角,其实还是点击的Button,还是在Button.Click事件.
    如果是向Button加了一个小的控件来显示这个小的三角以至于不会因为点击小三角而使Button被点击,那么就要在这个小控件上加Click事件了.你可以在Button.Controls中添加一个Visible=true的小的控件,这个小控件显示三角并处理它的Click以弹出菜单.
      

  21.   

    hbxtlhx(平民百姓-自已动手,丰衣足食) :恩,是想在按钮上再放一个小控件,小按钮单击时弹出菜单,主按钮单击时做另外的事情这样的功能如何实现 能在具体一点吗?很感谢你百忙之中的回帖也感谢所有路过的人
      

  22.   

    你可以这样向一个Button中添加一个小的Button:Button btn = new Button();
    btn.Size = new Size(18, 18);
    btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
    btn.Text = "6";
    btn.FlatStyle = FlatStyle.Popup;
    btn.Font = new Font("Marlett", 9);
    btn.Click += new EventHandler(btn_Click);
    this.button1.Controls.Add(btn);
    btn.Visible = true;void btn_Click(object sender, EventArgs e)
    {
        ContextMenu cm = new ContextMenu();
        cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
        cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
        cm.Show(this, this.PointToClient(Control.MousePosition));
    }
    private void menu_Click(object sender, EventArgs e)
    {
        MenuItem item = (MenuItem)sender;
        Console.WriteLine(item.Text);
    }
      

  23.   

    hbxtlhx(平民百姓-自已动手,丰衣足食)谢谢你提供的方法但是转到视图设计器里的时候提示:
    加载文档时出错,然后再重新尝试加载该文档,错误信息如下所示:
    设计器无法处理84行中的代码:
    btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
    方法"InitializeComponent"内的代码设计器生成,不应手动修改。请删除任何更改,然后尝试重新打开设计器。
      

  24.   

    还有一个问题 就是当点击按钮(btn)和小三角的时候都会弹出相同的菜单(contextMenu1)
    我想让单击按钮的时候完成一个事件
          单击小三角的时候完成另一个事件 如何区分我每次点击的是按钮还是小三角呢
    请路人指点一下 这个问题头痛好几天了谢谢
      

  25.   

    我想让单击按钮的时候完成一个事件
    单击小三角的时候完成另一个事件 如何区分我每次点击的是按钮还是小三角呢
    ————————————————————————————————————你可以做个控件:一个button,右边紧挨者再加一个有个三角形标记的小按钮,小按钮单击时弹出菜单,主按钮单击时做另外的事情说过N次了
      

  26.   

    private void button1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(e.Button == MouseButtons.Left)
    {
    this.contextMenu1.Show(Control.MousePosition);
    }
    }
      

  27.   

    直接拖contextMenuStrip1到界面,然後設置菜單Item,最後綁定到按鈕(屬性:contextMenuStrip)
    右鍵按鈕就會彈出contextMenuStrip1