嗨,我正在用 C# 开发一个 Windows 窗体应用程序。
我有一个 FlowLayoutPanel,里面有一个动态的面板列表。如何为 FlowLayoutPanel 内的面板添加鼠标单击事件?
感谢这个。但是我可以调用一些 void 函数,而不是事件函数。像这样的东西:
private void example(String x)
{
label2.Text = x;
}
你可以这样做:
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
}
如果您想调用 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());
}
为每个面板在创建它们时分配 mouseclick 与 .MouseClick 事件
myPanel.MouseClick += myMouseClickEventFunction;