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