独特的动态面板-区分动态生成的面板-C#

独特的动态面板-区分动态生成的面板-C#,c#,winforms,dynamic,panel,C#,Winforms,Dynamic,Panel,因此,我正在为flowLayoutPanel创建一些动态面板,并希望在悬停时在标签上显示它们的名称,但它总是给我最新创建的面板名称 我的代码: private void create_Click(object sender, EventArgs e) { Panel p = new Panel(); p.Name = "panel" + (flowLayoutPanel1.Controls.Count + 1); p.B

因此,我正在为flowLayoutPanel创建一些动态面板,并希望在悬停时在标签上显示它们的名称,但它总是给我最新创建的面板名称

我的代码:

private void create_Click(object sender, EventArgs e)
    {
        Panel p = new Panel();
        p.Name = "panel" + (flowLayoutPanel1.Controls.Count + 1);
        p.BackColor = Color.FromArgb(123, R.Next(222), R.Next(222));
        p.Size = new Size(flowLayoutPanel1.ClientSize.Width, 50);
        p.MouseEnter += new System.EventHandler(this.p_MouseEnter);
        p.MouseLeave += new System.EventHandler(this.p_MouseLeave);
        flowLayoutPanel1.Controls.Add(p);
        flowLayoutPanel1.Controls.SetChildIndex(p, 0);

        

        p.Paint += (ss, ee) => { ee.Graphics.DrawString(p.Name, Font, Brushes.White, 22, 11); };
        flowLayoutPanel1.Invalidate();

        ID = p.Name = "panel" + (flowLayoutPanel1.Controls.Count + 1);
    }

private void p_MouseEnter(object sender, EventArgs e)
    {
        label1.Text = ID.ToString();
    }

任何关于如何解决这个问题的想法,都将不胜感激

p.Paint
行之后,您应该执行以下操作:

    p.MouseEnter += (ss, ee) => label1.Text = p.Name;

label1.Text=((面板)发送方).Name非常感谢,它工作得非常好。再一次,谢谢!嘿,它也起作用了,谢谢你的回答和时间!