2012-08-04 45 views
2

我有20個文本框和20個my.settings變量vb.net通過控制和my.settings變量

循環

文本框和my.settings變量具有相同的名稱 文本框名稱:mid0,它具有的價值my.settings.mid0

文本框在運行時 創建和我有一個保存按鈕,這將節省my.settings變量的文本框中的值

這裏是代碼

Dim Ctl As Control 
    Dim MyTextbox As TextBox 
    For i As Integer = 0 To 20 
     Ctl = tabc.TabPages(6).Controls.Item("mid" & i.ToString) 
     If Ctl IsNot Nothing Then 
      MyTextbox = CType(Ctl, TextBox) 
      My.Settings.("mid" & i.ToString) = MyTextbox.Text 'this line is the problem 
     End If 
    Next 

那麼我如何循環my.settings變量? 肚裏形式mid0到mid20

我試圖

CallByName(My.Settings, "mid" & i.ToString, CallType.Set) = MyTextbox.Text 

,但我得到一個錯誤「表達式是一個值,因此不能作爲賦值的目標。」

+0

這是一個不需要代碼的內置功能。選擇文本框並在屬性窗口中單擊ApplicationSettings。 – 2012-08-04 18:15:33

+0

但在運行時添加了文本框,所以我無法選擇文本框:D – user1570048 2012-08-04 21:57:22

回答

3

變化My.Settings線

My.Settings("mid" & i.ToString) = MyTextbox.Text 

這實際上相當於刪除:)

+1

不是一個通用的答案... – Searush 2013-03-24 20:49:08

1

你不能寫CallByName(...)= smtg的時期。因爲CallByName是一個函數,而不是屬性。
但CallByName的第四個參數讓你做你想做的一切。
這裏有您需要將無需更改任何代碼工作代碼:

CallByName(My.Settings, "mid" & i.ToString, CallType.Set, MyTextbox.Text) 

我認爲這將有助於你了。祝你好運 !

+0

+1謝謝,它對我有效! – Searush 2013-03-24 20:49:40

相關問題