2016-10-18 5 views
0

프로그램 실행 중에 폼에 레이블과 텍스트 상자를 동적으로 생성하기 위해 여기에서 설명한 솔루션 중 하나에서 찾은 코드를 사용하고 있습니다. 라벨과 상자를 생성하는 코드는 잘 동작합니다. 내 문제는 내가 동적으로 만들어진 텍스트 상자에 사용자 입력에서 뭔가 할 수 있어야합니다,하지만 변수로 정의하려면 사용자 입력에 액세스하는 방법을 잘 모르겠습니다. 도와 줘서 고마워.C#에서 동적으로 작성된 텍스트 상자 입력

private void button2_Click(object sender, EventArgs e) 
    { 
     int intGroups = Convert.ToInt32(maskedTextBox1.Text); 
     int n = intGroups; 
     for (int i = 1; i <= n; i++) 
     { 
      //Retrieved from http://stackoverflow.com/questions/15008871/how-to-create-many-labels-and-textboxes-dynamically-depending-on-the-value-of-an     
      //Create label 
      Label portTypeLabel = new Label(); 
      portTypeLabel.Text = String.Format("Port Type (FastEthernet/GigabitEthernet) {0}", i); 

      Label portGroupLabel = new Label(); 
      portTypeLabel.Text = String.Format("Port Group (the first number before the slash, usually 1) {0}", i); 

      Label startIntNumLabel = new Label(); 
      portTypeLabel.Text = String.Format("Group {0} starting interface number", i); 

          //Position label on screen 
      portTypeLabel.Left = 10; 
      portTypeLabel.Top = (i) * 20; 
      /* Must add the rest of the code for displaying the labels here 
      */ 
      //Create textbox 
      TextBox textBox = new TextBox(); 
      ComboBox combo = new ComboBox(); 
      //Position textbox on screen 
      textBox.Left = 120; 
      textBox.Top = (i) * 20; 
      combo.Left = 120; 
      combo.Top = (i) * 20; 
      //Add controls to form 
      this.Controls.Add(portTypeLabel); 
      this.Controls.Add(textBox); 
      this.Controls.Add(combo); 
     } 
+0

한 가지 방법 나는 이것이 내가 양식에 추가로 내가 그 값을 추적 할 수 있도록 –

+0

명시 적으로 참조하지 않고, 배열하는 방법을 그들 모두의/목록을 각 텍스트 상자를 추가하는 것입니다 'n' 세트의 입력을 얻으려면'n' 세트의 컨트롤을 필요로하지 않습니다 - 그들은 재사용이 가능합니다. 사용자를위한 버튼을 추가하여 입력을 수집하고 컨트롤을 지우도록 신호를 보내십시오. – Plutonix

+0

Plutonix, 좋은 지적입니다. 그것이 저에게 다만 무언가 인 경우에, 나는 그것 저쪽에 모두 일 것입니다. 그러나 기술에 정통한 사람들보다 적게 배포 할 수 있도록 노력하겠습니다. 나는 모든 사람들이 앞을 볼 수있는 것이 더 좋을 것이라고 생각합니다. 그러나 그 알림을 주셔서 감사합니다! – ajjar

답변

1

은 첫째, 당신은 쉽게 액세스 할 수있는 컨트롤 몇 가지 이름을 줄 필요가 다음과 같이

내가 사용하고있는 코드입니다. 당신은 선택을위한 방법을 만들어야하는 경우

TextBox textBox = new TextBox(); 
textBox.Name = "textbox" + i.ToString(); 

둘째, 당신은 아마 사용 (당신이 이벤트가 발생 텍스트 상자에 확인 switch..case를 넣을 수 있습니다이 방법에서는 이벤트를

textBox.TextChanged += new System.EventHandler(this.TextChanged); 

를 정의해야합니다 끝에있는 숫자).

void TextChanged(object sender, EventArgs e){ 
    TextBox t = (TextBox)sender; 
    // t is the textbox you referred 
    MessageBox.Show(t.Name); 
} 
+0

여기 거의 자정이고 잠자리에 들기 시작합니다. 그러나 그렇게하는 것이 너무 단순 해 보이기 때문에 내가하는 일에 아마도 효과가있을 것입니다. 나는 내일이 기회를주고 결과를 게시 할 것이다. 신속한 응답에 감사드립니다! – ajjar

+0

첫번째 부분은 정상적으로 작동했습니다. 그러나 두 번째 부분에서는 ".TextChanged"이벤트가 + = 연산자의 왼쪽에만있을 수 있다는 오류가 발생합니다. 그러나 이것은 내가 생각했던 것보다 훨씬 더 멀어지게합니다. 고맙습니다! – ajjar

+0

이 작업을하는 것은 유감이지만이 코드로 작업 한 후에는 선택 방법을 작동시키는 방법을 알 수 없습니다. 또한 텍스트 상자를 명명 한 후에도 텍스트 상자를 참조 할 수 없습니다. 그 이유에 대한 아이디어가 있습니까? 다시 감사합니다. – ajjar

관련 문제