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

Add a Right-Click Event to dynamic created Buttons in c#

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);
}

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

有人解决这个问题吗?

谢谢

这是因为您使用了错误的点击事件处理程序。不要使用 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();
        }
    }
}