我的问题可能很简单,但却让我感到害怕......
我有一个带有tabcontrols的windows用户表单(大约10x)。 在每个tabcontrol上,我有一些groupbox控件,其中包含一些文本框。
树结构将是这样的。
-Tab1
--Groupbox1
---Textbox name Alg_0
---Textbox name Alg_1
---Textbox name Alg_2
---Textbox name Alg_3
--Groupbox2
---Textbox name Alg_4
---Textbox name Alg_5
---Textbox name Alg_6
---Textbox name Alg_7
-Tab2
--Groupbox3
---Textbox name DD_0
---Textbox name DD_1
---Textbox name DD_2
---Textbox name DD_3
--Groupbox4
---Textbox name DD_4
---Textbox name DD_5
---Textbox name DD_6
---Textbox name DD_7
And many more (but in the same spirit)
我想要做的是遍历这些文本框以创建逗号分隔行,并将值写入.txt文件以进行保存。稍后我将加载这些值并继续使用它们。
示例(名称将是课程的值):
Alg_0,Alg_1,Alg_2,Alg_3,Alg_4,Alg_5,Alg_6,Alg_7,
我尝试使用me.controls("String here")
方法。但是当控件放在容器中时,这似乎不起作用。
示例:
Private Sub main_save_Click(sender As Object, e As EventArgs) Handles main_save.Click
Dim oID As Integer
Dim oEnd As Integer
Dim oAlg As String
Dim oDD As String
For oID = 0 To oEnd = 7
oAlg = Me.Controls("Alg_" & oID).Text & ","
Next
For oID = 0 To oEnd = 7
oDD = Me.Controls("DD_" & oID).Text & ","
Next
End Sub
/最后将是一个令牌代码,我将在这里稍后添加./
我的问题 当如上所述在容器中时,如何按此顺序访问这些文本框?
答案 0 :(得分:2)
你可以试试这样的东西
for each tp in tabControl.Controls.OfType(Of TabPage)()
for each gp in tp.Controls.OfType(Of GroupBox)()
for each tx in gp.Controls.OfType(Of TextBox)()
sb.Append(tx.Text & ",")
Next
Next
Next
此方法采用包含各种tabPage的tabControl,并为每个tabPage搜索页面ControlCollection以获取GroupBox类型的控件,然后为每个groupbox搜索其TextBoxes的控件集合并准备输出文本
相反,您可以使用此处生成的字符串来恢复具有类似代码的文本框
Dim texts = lineFromFile.Split(",")
Dim index as Integer = 0
for each tp in tabControl.Controls.OfType(Of TabPage)()
for each gp in tp.Controls.OfType(Of GroupBox)()
for each tx in gp.Controls.OfType(Of TextBox)()
tx.Text = texts(index)
index = index+1
Next
Next
Next
我应该补充一点,这种方法相当薄弱,如果你以任何方式更改表单的布局,你可能会面临许多问题来恢复这些值