我正在创建一个程序,其中需要有一个与主机上不同内容相关的按钮列表。 我已经实现了这一点,如下面的代码所示(示例代码):
Button btn = new Button();
btn.Name = "Button1";
btn.Text = "Item 1";
this.formLayoutProject.Controls.Add(btn);
这最终将进入for循环,更多按钮将在流程布局上,但我开始小规模并开始工作,所以我以后不会遇到问题。 这会按预期生成按钮(格式化也会在这里完成,但还没有达到目的)。
我坚持的是如何在按钮上添加点击事件/右键单击事件上下文菜单? 我可以将点击事件放在代码中,用于按钮和项目,这些按钮和项目将在表单上修复并且可以正常工作,但我不知道如何动态执行此操作,因为每个目标计算机上的按钮都不同。
我在谷歌上搜索过,但我还没找到我正在寻找的东西(可能是因为我不确定搜索的关键字是什么)。
我将如何做到这一点?
答案 0 :(得分:3)
您可以在新的+=
对象事件中使用btn
运算符添加按钮点击事件处理程序:
// Add 10 buttons dynamically.
// Bind to the same method.
for (var i = 1; i <= 10; i += 1)
{
Button btn = new Button();
btn.Name = "Button" + i;
btn.Text = "Item " + i;
this.formLayoutProject.Controls.Add(btn);
// Add handler.
btn.Click += btn_Click;
}
现在您只需要定义处理程序方法:
private void btn_Click(object sender, EventArgs e)
{
// This is the button which was clicked.
var button = (Button)sender;
var buttonName = button.Name;
// Do some stuff.
// To detect certain mouse click events, cast e as a MouseClick.
MouseEventArgs mouseEvents = (MouseEventArgs)e;
// Now use the mouseEvents object to handle specific events based on the button clicked.
if (mouseEvents.Button == MouseButtons.Right)
{
// Right button clicked.
}
else if (mouseEvents.Button == MouseButtons.Left)
{
// Left button clicked.
}
}