在 C# 中动态创建的按钮中添加右键单击事件

1 c# dynamic button right-click winforms

List<Button> buttonlist = new List<Button>();
for(int i = 0; i< 5;i++){
Button but = new Button();
but.Name = Convert.ToString(i);
but.Location = new Point(50 + i * 20, 50);
but.Size = new Size(20,20);
buttonlist.Add(but);
but.Click += delegate {
//It's a Leftclick 
//Code do stuff
 }
this.Controls.Add(but);
}
Run Code Online (Sandbox Code Playgroud)

目前,我正在 Visual Studio 2017 中使用 C# 制作一个小益智游戏。我动态创建了一些按钮,当我左键单击它时,它会执行一些操作。目前,当我右键单击它时,什么也没有发生。我不知道如何为每个按钮添加“右键单击”事件。如果我右键单击它,它们应该都会执行相同的操作。

有人解决这个问题吗?

谢谢

Aar*_*ron 6

这是因为您使用了错误的单击事件处理程序。不要使用MouseClick,它不允许右键单击。

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace Anything
{
    public class Program
    {
        public static void Main(string[] _)
        {
            var form = new Form();
            List<Button> buttonlist = new List<Button>();
            for (int i = 0; i < 5; i++)
            {
                Button but = new Button();
                but.Name = Convert.ToString(i);
                but.Location = new Point(50 + i * 20, 50);
                but.Size = new Size(20, 20);
                buttonlist.Add(but);
                but.MouseUp += (s, args) =>
                {
                    if (args.Button == MouseButtons.Right)
                    {
                        // do your thing
                    }
                };
                form.Controls.Add(but);
            }

            form.ShowDialog();

            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)