从选项卡控件VB中按指定顺序提取Texboxes值



我有一个活动售票的vb项目,最后我需要为每次购买保存一个文本文件。

我有选项卡控件,在最后,所有需要进入文本文件(事件和客户)的数据都在一个选项卡中

我有这样的代码,它将读取每个文本框中的文本,现在为了测试目的,它会抛出一个带有值的消息框。它是有效的,唯一的是,它以奇怪的顺序显示值,我不知道如何以所需的顺序读取它们。(如果我能在文本框之前添加标签,也不会有什么坏处。text,但我没有那么贪婪:)

 For Each GenericControl In TabPurchaseTickets.Controls
            If TypeOf GenericControl Is System.Windows.Forms.TextBox Then
                Dim tb As TextBox = DirectCast(GenericControl, TextBox)
                MsgBox(tb.Text)
            End If
        Next

在将这些文本框写入文件之前,您需要有一些东西来帮助您识别这些文本框及其值
在将来的应用程序修订中,依赖tabcontrol上文本框的顺序将是一个巨大的错误。如果您需要更改该顺序,较旧的文件将导致"版本控制"问题。

您可以在设计时为每个文本框定义Tag属性,使用一个值来帮助您识别它们,并使用标记值、分隔符和文本框值编写文件

  Dim sb = new StringBuilder()
  For Each GenericControl In TabPurchaseTickets.Controls.OfType(Of TextBox)
     Dim tb As TextBox = DirectCast(GenericControl, TextBox)
     sb.AppendFormat("{0};{1}", tb.Tag, tb.Text)
     sb.AppendLine()
 Next

现在将StringBuilder.ToString写入您的文本文件,您将得到类似于以下的内容

Name;John
Surname;McInroe
Sport;Tennis
....

通过这种方式,你可以随心所欲地更改文本框的顺序,因为每个值都与Tag属性相关,你可以很容易地重新加载它。

当然,这只是一个例子,我建议您研究使用适当的数据库系统,而不是简单的文件。

这是一个非常丑陋的解决方案,但它确实有效。不幸的是,在这个项目中,这太多了!:D

感谢标签的想法,很高兴发现还有另一个字段可以在文本框中"存储"文本。

无论如何,这是bodge代码*注意,msgbox只是用于测试输出,稍后会修改它以保存在文本文件中:

标注标签(15)为字符串Dim字段(15)作为字符串

    For Each GenericControl In TabPurchaseTickets.Controls.OfType(Of TextBox)()
        Dim tb As TextBox = DirectCast(GenericControl, TextBox)
        fields(tb.TabIndex) = tb.Text
        labels(tb.TabIndex) = tb.Tag
    Next
    For i As Integer = 0 To 15
        MsgBox(labels(i) & ": " & fields(i))
    Next

最新更新