我有这部分代码
przyciski[i] = new Button();
przyciski[i].Visible = false;
przyciski[i].Name = "przycisk" + i;
przyciski[i].Click += new System.EventHandler(ButtonClickHandler);
描述了动态创建的按钮,以及程序下面的这个事件处理程序
private void ButtonClickHandler(object sender, EventArgs e)
{
Button btn = (Button)sender;
if(btn.Name == "przycisk1")
{
//Open specific JPEG in external aplication
}
}
有没有更快捷的方法来识别按钮及其目标?
答案 0 :(得分:2)
这是另一种选择。如果您要为每个按钮执行不同的代码,为什么还要给他们一个名字然后在点击事件中检测名称?
只需创建按钮,然后指定每个按钮应该做什么。
var przyciski = new List<Button>();
for (var i = 0; i < 5; i++)
przyciski.Add(new Button { Visible = false });
przyciski[0].Click += (s, e) => { /* Do something */ };
przyciski[1].Click += (s, e) => { /* Open specific JPEG in external aplication */ };
przyciski[2].Click += (s, e) => { Console.WriteLine("You clicked button 2."); };
przyciski[3].Click += (s, e) => { };
przyciski[4].Click += (s, e) => { };
答案 1 :(得分:1)
如果przyciski
是实例变量,则可以检查引用相等性:
private void ButtonClickHandler(object sender, EventArgs e)
{
if (sender == przycisk[1])
{
//Open specific JPEG in external aplication
...
}
...
}