2011-09-05 3 views
0

텍스트 상자 배열 및 레이블 배열을 만들었습니다. TextBox에서 정보가 업데이트되면 레이블을 변경하려고합니다. 내가 어떻게 할 수 있니? 아래 코드는 제 코드입니다. 나는 내가 도움이 필요한 부분이라고 생각하는 EvenHandler를 만들지 않았다. C#의 모든 Windows 응용 프로그램 양식을 사용하여. 방법에서 그 텍스트 변경 "보낸 사람"으로 전달되는 텍스트 상자를동적으로 생성 된 텍스트 상자 및 레이블 연결

private void textBox1_ValueChanged(object sender, EventArgs e) 
    { 
     TextBox changedTxt = sender as TextBox; 
     for (int i = 1; i < value; i++) 
      if (textBoxes[i] == changedTxt) 
      { 
       Label lblToChange = labeld[i]; 
       lblToChange.Text = changedTxt.Text; 
       break; 
      } 
    } 

:

textBoxes = new TextBox[value]; 
labels = new Label[value]; 

for (int i = 1; i < value; i++) 
{ 
    textBoxes[i] = new TextBox(); 
    textBoxes[i].Location = new Point(30, ToBox.Bottom + (i * 43)); 

    labels[i] = new Label(); 
    labels[i].Location = new Point(TopBox3[i].Width + 140, TopBox3[i].Top +3); 

    textboxes[i].ValueChanged += new EventHandler(this.TextBox_ValueChanged) ; 

    this.Controls.Add(labels[i]); 
    this.Controls.Add(textBoxes[i]); 
} 
+0

TextBox에 대한 ValueChanged 이벤트가 없습니다. TextChanged입니다. – Tim

답변

0

이 뭔가를 작성해야합니다. 배열을 조사하면 해당 레이블에 액세스하고 텍스트를 설정하는 데 사용할 수있는 색인 "i"를 식별 할 수 있습니다.

BTW가 말했듯이 이벤트는 ValueChanged가 아닌 TextChanged입니다. 또한 텍스트가 변경 될 때마다 이벤트가 트리거된다는 점에 유의하십시오. 즉, 키를 누르면 라벨이 업데이트됩니다. 사용자가 텍스트 입력을 마친 경우에만 레이블을 업데이트하려면 사용해야하는 이벤트를 남겨 둡니다.

당신은 태그 속성에

textBoxes[i].Tag = i; 

을 TextBox의 인덱스를 기억하고 (로컬 변수로 레이블 배열을 유지한다고 가정) 다음 해당 레이블을 얻을 수 있도록 이벤트 핸들러에서이 값을 사용할 수 있습니다

1

protected void TextBox_ValueChanged(object sender, EventArgs e) 
{ 
    TextBox textbox = sender as TextBox; 
    if(textbox==null) 
    return; 
    int index = Convert.ToInt32(textbox.Tag); 
    if(index >= 0 && index < this.labels.Length) 
    { 
    Label label = this.labels[index]; 
    /* ... */ 
    } 
} 
관련 문제