2011-11-29 73 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財產。但問題是我的控件都在側面嵌套面板和類似的東西,所以我必須做很多LOOPING!比較他們的標籤與標籤avilable在我保存的文件(注意,我不會保存文本文件中的所有控件,只是一些em!)

怎麼辦?

回答

4

你可以找到它的名字控制,如果你有機會到窗體的控件屬性

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

'Form.Controls.Fine()'是否可以找到嵌套面板或佈局面板中的控件? –

+1

是的,如果第二個參數是真的,它會在子控件(面板,groupboxes e.t.c)中搜索, – Stecya

1

存放在一個鍵值對的容器,其中關鍵是控制和值的名稱你的所有控件是一個參考控制它自我。您可以使用Dictionary來存儲它們。從文本文件加載回來時,使用鍵找到適當的控件並設置文本。

1

你的問題還不清楚。什麼我理解是要text屬性寫入一個文本文件,後來通過txt文件恢復,如果這樣的話它是一個簡單明瞭的解決方案[在winform]

保存使用的格式控制-name:文本 後來負載 使用

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

即在上下文

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,然後單擊「應用」。 此外,如果您嘗試訪問

希望有所幫助。

相關問題