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 回答