轻松识别按钮并自动加载其目标

时间:2015-12-27 17:50:42

标签: c#

我有这部分代码

            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 
            }

    }

有没有更快捷的方法来识别按钮及其目标?

2 个答案:

答案 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 
        ...
    }
    ...
}