2013-08-13 3 views
0

이것은 첫 번째 게시물입니다. 89 개의 텍스트 상자가있는 C# 응용 프로그램을 만들고 있습니다. 텍스트 상자의 이름은 "Box #" 루프 내에서 텍스트 상자의 값을 어떻게 변경할 수 있습니까? 이 같은 뭔가를해야만 :C# 동적 양식 편집

for (int y = 0; y < 89; y++) 
{ 
    "Box"+y.Text = "somthing"; 
} 
+5

WPF , Windows 양식 또는 웹? – SWeko

+0

어떻게 이러한 텍스트 상자를 삽입합니까? –

+0

텍스트 상자는 얼마나 동적입니까? WYSIWYG 편집기를 통해 이들 모두를 배치하는 경우 엄격한 디자인 정책을 적용하기 때문에 각 텍스트 상자를 이름으로 참조하는 것이 좋습니다. – rhughes

답변

2

당신은 단순히 (루프 VIA) 테스트를 조정 양식의 컨트롤의 Type을 확인할 수 있습니다.

코드 스 니펫;

public Form1() 
    { 
     InitializeComponent(); 
     ChangeTextBoxes(); 
    } 

public void ChangeTextBoxes() 
    { 
     foreach (var c in this.Controls.OfType<TextBox>()) 
     { 
      c.Text = @"New Value"; 
     } 
    } 

희망이 있습니다.

2

당신이 "Box"를 사용할 때 당신은 새로운 String 객체를 생성하고 있습니다. 내가 권장할만한 것은 귀하의 모든 TextBox 개체를 목록에 넣는 것입니다. Type는 다음 TextBox 경우

List<TextBox> boxes = new List<TextBox>(); 

// Add all of your text boxes. 

foreach (TextBox box in boxes) { 
    box.Text = "This will change the text"; 
} 
+1

'singleItem'은 어디에서 왔습니까? –

+0

웁스! 내 잘못이야,. – christopher

0

보기 (자바 스크립트를 사용하여 클라이언트 측)에서 변경하는 경우 "eval()"함수를 사용하십시오. 이와 유사한

뭔가 : 프로그래밍 방식으로 텍스트 상자를 만들 경우

eval('Box' + count + '.Text = "'+newText+'";'); 
0

, 당신은 어떤이 당신에게 좋은 유지 보수 기능을 줄 것이라고하는 DataTable 자신의 Text 속성을 바인딩 할 수 있습니다 :

DataTable _tbValues; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    _tbValues = new DataTable(); 
    string[] cells = new string[89]; 
    for (int i = 0; i < 89; i++) 
    { 
     _tbValues.Columns.Add(String.Format("Box{0}", i)); 
     var tb = new TextBox(); 
     tb.Name = String.Format("Box{0}", i); 
     tb.DataBindings.Add("Text", _tbValues, String.Format("{0}", tb.Name)); 
     tb.Top = i * 20; 
     this.Controls.Add(tb); 
    } 
    _tbValues.Rows.Add(cells); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    _tbValues.Rows[0].ItemArray = Enumerable 
     .Repeat(DateTime.Now as object, _tbValues.Columns.Count) 
     .ToArray(); 
    _tbValues.AcceptChanges(); 
}