为运行时创建的文本框设置文本 属性

Set text property for Textbox created at runtime

我正在使用 WinForms。我在运行时在 FlowLayoutPanel 上创建了多个 TextBox。我想为数组

中的每个文本框设置文本 属性

我写这段代码

在运行时创建文本框

for (int i = 1; i <= no_gb; i++)
{
    GroupBox g1 = new GroupBox();
    g1.Text = "Window " + i;
    g1.Size = new Size(207, 105);
    TextBox txt = new TextBox();
    txt.Name = "txtwidth" + i;
    flowLayoutPanel1.Controls.Add(g1);
}

我在这里遇到异常:未将对象引用设置为对象的实例

for (int i = 1; i <= Hlk_WidthArray.Length; i++)
{
    Hlk_WidthArray[i] += Hlk_WidthArray[i];
    flowLayoutPanel1.Controls["txtwidth" + i].Text = Hlk_WidthArray[i].ToString();
}

您没有将 TextBox 添加到 FlowLayoutPanel。

for (int i = 1; i <= no_gb; i++)
{
    GroupBox g1 = new GroupBox();
    g1.Text = "Window " + i;
    g1.Size = new Size(207, 105);
    g1.Name = "gbG1";
    TextBox txt = new TextBox();
    txt.Name = "txtwidth" + i;
    g1.Controls.add(txt);
    flowLayoutPanel1.Controls.Add(g1);
}

for (int i = 1; i <= Hlk_WidthArray.Length; i++)
{
    Hlk_WidthArray[i] += Hlk_WidthArray[i];
    ((TextBox)(((GroupBox)flowLayoutPanel1.Controls["gbG1"]).Controls["txtwidth" + i])).Text = Hlk_WidthArray[i].ToString();
}

您忘记将 TextBox 添加到 Panel,这里是示例:

        Panel panel1 = new Panel();
        panel1.Dock = System.Windows.Forms.DockStyle.Fill;
        panel1.Location = new System.Drawing.Point(0, 0);
        panel1.Name = "panel1";
        panel1.Size = new System.Drawing.Size(789, 424);
        panel1.TabIndex = 0;
        this.Controls.Add(panel1);

        for (int i = 0; i < 20; i++) 
        {
            TextBox Box = new TextBox();
            Box.Location = new System.Drawing.Point(55, 12+(20*i));
            Box.Name = "Box"+i.ToString();
            Box.Size = new System.Drawing.Size(100, 20);
            panel1.Controls.Add(Box);
        }

        for (int i = 0; i < 20; i++) 
        {
            panel1.Controls["Box" + i].Text = "TextBox " + i;
        }

代码中的一些更改:

 for (int i = 1; i <= no_gb; i++)
 {
     GroupBox g1 = new GroupBox();
     g1.Text = "Window " + i;
     g1.Size = new Size(207, 105);
     g1.Name = "GB" + i.ToString(); //New Line
     TextBox txt = new TextBox();
     txt.Name = "txtwidth" + i;
     g1.Controls.Add(txt); //New Line
     flowLayoutPanel1.Controls.Add(g1);
 }

 for (int i = 1; i <= Hlk_WidthArray.Length; i++)
 {
     Hlk_WidthArray[i] += Hlk_WidthArray[i];
     flowLayoutPanel1.Controls["GB" + i].Controls["txtwidth" + i].Text = Hlk_WidthArray[i].ToString(); //Edited Line
 }

您需要将Textbox控件添加到Groupbox中,就像您将Groupbox控件添加到flowLayoutPanel1中一样

for (int i = 1; i <= no_gb; i++)
{
  GroupBox g1 = new GroupBox();
  g1.Text = "Window " + i;
  g1.Size = new Size(207, 105);
  TextBox txt = new TextBox();
  txt.Name = "txtwidth" + i;
  g1.Controls.Add(txt);//New Line (Code added)
  flowLayoutPanel1.Controls.Add(g1);
}