如何判断哪个面板触发了click事件

时间:2012-11-28 01:41:49

标签: c# winforms events sender

我有一系列面板控件,以我的形式以编程方式放置在各个位置。下面你可以看到,当我循环并增加I时,所有面板都注册了相同的事件处理程序。这对我很好,但我无法找到一种方法来告诉哪个面板在事件处理程序代码中触发了事件。我尝试使用sender,但我似乎无法弄清楚如何使用它。所以我的问题是如何在事件处理程序代码

中告诉哪个面板触发了事件
     Panels[i].Click += new EventHandler(AllPanels_Click);

  void AllPanels_Click(object sender, EventArgs e)
        {
           //need logic code here!
        }

2 个答案:

答案 0 :(得分:4)

首先将sender投放到Panel

void Form1_Click(object sender, EventArgs e)
{
    Panel clickedPanel = sender as Panel;
    if (clickedPanel != null)
    {
        // do something with clickedPanel
    }
}

答案 1 :(得分:3)

void Form1_Click(object sender, EventArgs e)
{
    var panel = sender as Panel;
    if (null != panel)
    {
        if (panel.Name.equals("Panel1"))
        {
             .. ...
        }
    }
}