为动态创建的面板添加鼠标Click Event

时间:2013-06-11 15:00:59

标签: c# winforms

您好我正在用C#开发一个Windows窗体应用程序。

我有一个FlowLayoutPanel,在里面我有一个动态的面板列表。 如何为FlowLayoutPanel内的面板添加鼠标单击事件?


这是为了这个。但是我可以调用一些虚函数,而不是事件函数。这样的事情:

private void example(String x)
    {
        label2.Text = x;
    }

3 个答案:

答案 0 :(得分:8)

您可以这样做:

private void attachClickEventHandler()
{
  for (int i = 0; i < 10; i++)
  {
     Panel p = new Panel();
     p.Click+=p_Click;
     flowLayoutPanel1.Controls.Add(p);
  }

// OR

  foreach(Control c in flowLayoutPanel1.Controls)
     if(c is Panel)
        c.Click += p_Click;
}

void p_Click(object sender, EventArgs e)
{
   // do click stuff
}

答案 1 :(得分:2)

如果你想调用一个void函数并传递任何与你的面板信息相关的信息 - 你可以将这个信息添加到面板的Tag属性中,并从处理函数中调用它,如:

void AttachHandlers()
{
    Panel panel1 = new Panel();
    panel1.Tag = "this is first panel";
    panel1.Click += new EventHandler(panel1_Click);
    flowLayoutPanel1.Controls.Add(panel1);
}

void func_2(string str)
{
    label1.Text = str;
}

void panel1_Click(object sender, EventArgs e)
{
    func_2(sender.Tag.ToString());
}

答案 2 :(得分:1)

为每个面板创建时,为鼠标点击指定.MouseClick事件

myPanel.MouseClick += myMouseClickEventFunction;