2011-11-29 2 views
3

나는이 응용 프로그램 설정으로 수행 할 수 있다는 것을 알고 있지만, 내가 이런 식으로하고 싶지로드하는 텍스트 상자 또는 기타 제어 값 :저장 및 텍스트 파일

내가 가진 일부 텍스트 상자 및 기타 컨트롤이를 Text 속성 루프를 수행하고 텍스트 파일에 NameText 속성을 저장합니다. 구원의 문은 같은 것입니다 :

if (ctrl != null) sb.AppendLine(ctrl.Name.ToString() + ":" + ctrl.Text); 

내가 이런 식으로하고 싶지,하지만 난 컨트롤의 이름을 가리 수 없기 때문에, 내가 끼 었어를 다시로드 할! (나는 다른 변수를 사용하여 변수를 가리 키도록 PHP에서 가능했다 믿습니다!)

using (StreamReader file = new StreamReader(ofile.FileName)) 
{ 
     while((line = file.ReadLine()) != null) 
     { 
      if (line.StartsWith("#")) continue; //Line is a commment so skip 
      else 
      { 
       data = line.Split(':'); 
       //How to set back the text property to the variable? 
      } 
     } 
} 

은 내가 지금 생각하고있는 것은 컨트롤 대신 theire Name 재산의 Tag 속성을 저장하는 것입니다. 그러나 문제는 내 컨트롤이 옆에 중첩 된 패널에서 모두 scatering되어 있으므로 그런 작업을 많이해야한다는 것입니다. 저장된 태그에서 사용할 수있는 태그와 함께 theire 태그를 비교할 수 있습니다 (모든 컨트롤을 텍스트 파일에 저장하지 않을 것임을 유의하십시오.)

어떻게해야합니까?

답변

4

당신이 폼의 컨트롤 속성

var textBox = yourForm.Controls.Find("name", true) as TextBox; 
    if(textBox != null) 
     textBox.Text = "text"; 
+0

'Form.Controls.Fine()'은 중첩 패널 또는 레이아웃 패널 안에있는 컨트롤을 찾을 수 있습니까? –

+1

예. 두 번째 매개 변수가 true보다 작은 경우 하위 컨트롤 (패널, 그룹 상자 e.t.c)에서 검색합니다. – Stecya

1

스토어에 액세스 할 수 있으면 그것의 이름으로 컨트롤을 찾을 수는 키가 제어 값의 이름 인 키 값 쌍 컨테이너의 모든 컨트롤에 대한 참조 통제 자체. Dictionary을 사용하여 저장할 수 있습니다. 텍스트 파일에서 다시로드 할 때 키를 사용하여 적절한 컨트롤을 찾고 텍스트를 설정하십시오. 난 당신이 텍스트 파일에 텍스트 속성을 작성하고 그럼 그 [의 WinForm에서]는 straighforward 솔루션

의 형식 컨트롤을 사용하여 저장하면 나중에 txt 파일을 통해 복원 할 이해 뭐야

1

귀하의 질문은 불분명하다 -name : 텍스트 나중에 부하에 사용하여 상황에 맞는

while((line = file.ReadLine()) != null) 
    { 
     if (line.StartsWith("#")) continue; //Line is a commment so skip 
     else 
     { 
      string[] data = line.Split(':'); 
      if(data.Length>0) 
      { 
      if(this.Controls.ContainsKey(data[0])) 
      { 
       if(this.Controls[data[0]] is TextBox) 
      { 
       //generic 
      // this.Controls[data[0]].Text=data[1]; 
       //or use 
       ((TextBox) this.Controls[data[0]]).Text=data[1]; 
      } 
      } 
      } 
     } 
    } 

을에

this.Controls[<controlname>].Text=Text 

즉하시기 바랍니다 특정 작업을 수행하려는 경우 this.Controls가 Control Object를 반환한다는 점에 유의하십시오. 캐스트를 입력하고 적용하십시오. 또한 액세스하려고하는 경우

희망이 있습니다.