2015-01-12 3 views
0

WinForms를 사용하고 있습니다. FlowLayoutPanel에서 런타임에 생성 된 TextBoxes의 수가 있습니다. 나는런타임에 작성된 텍스트 상자의 텍스트 속성을 설정하십시오.

내가

런타임에 텍스트 상자를 만들려면이 코드를 쓰기 배열에서 각 텍스트 상자의 텍스트 속성을 설정하려는

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(); 
} 

답변

1

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(); 
} 
+0

이것은 질문 아래의 주석이어야합니다. 대답이 아닙니다! – yakhtarali

+0

@yakhtarali - 동의하지 않습니다. 이 질문에 대한 답변과 아마 문제를 해결합니다. – Icemanind

+0

정말 내 코드에 추가하고 같은 예외가 g1.Controls.Add (txt); 미리 감사드립니다. –

1

당신은 패널에 텍스트 상자를 추가 잊고, 여기에 예입니다 : 코드에서

 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 
} 
+0

iam 죄송합니다. 여기에 코드를 추가하는 것을 잊지 마십시오.하지만 실제로 코드에 groubbox에 추가했는데 동일한 예외가 있습니다. g1.Controls.Add (txt); 사전에 감사합니다 –

+0

글쎄, 각 그룹 상자 (예 : "GB")에 이름을 추가하고 두 번째 루프에 다음을 추가해야합니다. flowLayoutPanel1.Controls [ "GB"+ i] .Controls [ "txtwidth"+ i] .Text – Mariachi

0

, 그룹 상자 컨트롤을 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); 
} 
+0

iam 죄송합니다. 여기에 코드를 추가하는 것을 잊지 마십시오.하지만 실제로 코드에 groubbox에 추가했는데 동일한 예외가 있습니다. g1.Controls.Add (txt); 미리 감사드립니다. –

관련 문제