如何从动态实例化的自定义类中更改标签的文本?

时间:2019-07-19 22:49:17

标签: c# winforms

我有一个基于面板的自定义类,其中包含一个标签对象。 我的班级有一个构造函数,带有1个参数,类型为String,它必须是标签的文本。

在我的主要形式中,我通过一个值数组进行迭代,并以编程方式添加自定义面板类以及来自数组的值作为参数传递。

我看到我的面板,但是标签不可见。

我的表单的代码:

public partial class frmMain : Form
{
    public frmMain()
    {
        InitializeComponent();
    }

    private void Label1_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void FrmMain_Load(object sender, EventArgs e)
    {
        for (int i =0; i <= 20; i++) {
            PlaylistRecords pl = new PlaylistRecords("Some name " + i.ToString())
            {
                Name = "Some Name " + i.ToString()
            };
            this.pnlViewer.Controls.Add(pl);
            pl.Left = 2;
            pl.Top = 4 * i + pl.Height * i;
            pl.Invalidate();
        }
        this.pnlViewer.Invalidate();
        this.pnlViewer.AutoScroll = false;
        this.pnlViewer.HorizontalScroll.Enabled = false;
        this.pnlViewer.HorizontalScroll.Maximum = 0;
        this.pnlViewer.AutoScroll = true;
    }
}

我的PlaylistRecords类:

public class PlaylistRecords:Panel 
{
    private Label lblRecordName;

    public static String RecordName { get; set; }

    public PlaylistRecords(
            String RecordName
            )
    {
        InitializeComponent();
        this.Size = new System.Drawing.Size(800,50);
        this.BackColor = System.Drawing.Color.FromArgb(20,20,20);

        PlaylistRecords.RecordName = RecordName;

        this.lblRecordName.Text = PlaylistRecords.RecordName;

    }

    private void InitializeComponent()
    {
        this.lblRecordName = new System.Windows.Forms.Label();
        this.SuspendLayout();
        // 
        // lblRecordName
        // 
        this.lblRecordName.BackColor = System.Drawing.Color.Black;
        this.lblRecordName.ForeColor = System.Drawing.Color.White;
        this.lblRecordName.Location = new System.Drawing.Point(2, 2);
        this.lblRecordName.Name = "lblRecordName";
        this.lblRecordName.Size = new System.Drawing.Size(350, 23);
        this.lblRecordName.TabIndex = 0;
        this.ResumeLayout(false);

    }
}

我看到了pl对象,但是没有显示lblRecordName标签。 在调试器中,我看到lblRecordNmae具有正确的值。

为什么我看不到它?

0 个答案:

没有答案