C# WINFORM 鼠标右键弹出菜单问题
我动态创建了按钮,Button [,] btn = new Button[5.5];
5行5列 25个按钮.
每个按钮都要有一个鼠标右键的事件,右键弹出个菜单,菜单上面是"删除",这个该怎么写?不会写25个吧?...
private void btn1_MouseDown(object sender, MouseEventArgs e)
private void btn2_MouseDown(object sender, MouseEventArgs e)
private void btn3_MouseDown(object sender, MouseEventArgs e)
.....
1.每个按钮都要有一个鼠标右键的事件,这个该怎么写?不会写25个吧?...2.弹出菜但怎么写?右键弹出个菜单,菜单上面是"删除",谢谢各位大大!

解决方案 »

  1.   

        右键菜单可以只拖一个,然后这25个按钮都和他绑定。
        右键菜单里加入删除菜单项,删除菜单项里的代码可以根据不同的按钮用swich case写业务。
        
      

  2.   

    当然不肯能写25了,你每个button的tag都应该记录该button的特殊性,然后每个button的click(mousedown)事件都指向一个函数,在该函数中实现你点击按钮的功能。
    private void InitButton()
    {
    int i=0;
    foreach(Button b in btn)
    {
    b.Tag = i;
    b.Click += new EventHandler(MButton_Click);
    }
    }
    void MButton_Click(object sender, EventArgs e)
            {
                Button btn = sender as Button;
                if (btn != null)
                {
                    int i = (int)btn.Tag;
                    //do something yourself
                }
            }
      

  3.   

    还有个简单办法,就是设置你的每个button的菜单属性
      

  4.   

    OK,结贴.
    找到事例了.
    private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {//不要给窗口设置菜单,不然右键也有效
                    contextMenuStrip1.Show(e.X + this.Left, e.Y + this.Top);
                }
            }