2

20 個のテキスト ボックスと 20 個の my.settings 変数があります

textboxes 変数と my.settings 変数は同じ名前の textbox name: 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

しかし、「式は値であるため、割り当ての対象にすることはできません」というエラーが表示されます。

4

2 に答える 2

3

My.Settings 行を次のように変更します

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

これは実際にはピリオドを削除することになります:)

于 2012-08-04T18:06:09.630 に答える
1

CallByName(...)=smtg と書くことはできません。CallByName はプロパティではなく関数であるためです。
しかし、CallByName の 4 番目のパラメーターを使用すると、必要なことをすべて実行できます。
すべてのコードを変更せずに機能する必要なコードは次のとおりです。

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

これは非常に役立つと思います。幸運を !

于 2013-03-24T19:08:52.523 に答える