首页 > 解决方案 > 保存多个文本框和可能的组合框的内容

问题描述

我正在开发一个基本应用程序,可让您跟踪最多 3 项技能所获得的经验。技能的名称在组合框中(不确定是否最好),开始和结束值在文本框中。

我想添加一个保存按钮来保存结束值和选定的技能,当按下加载按钮时,它将用保存的技能填充组合框并将旧的结束值输入到新的开始值中。

我整天都在研究这个问题,搜索了很长时间,我想出了类似的解决方案,但似乎没有任何效果。我仍然是一个初学者,所以有些解决方案我不明白。此外,这必须适用于 VBNet。

我遇到的最接近的解决方案是:

File.WriteAllText("C:\Data.txt", String.Join("|", new String({TextBox1.Text, TextBox2.Text, TextBox3.Text}))

我希望该文件保留在主目录中的项目中。这也适用于组合框,以及如何重新加载这些值?

我还是VB的新手,希望这个问题有意义。

标签: vb.netwinformsiocontrols

解决方案


如果我的想法正确,请在下面找到一些功能,如果它们可以提供帮助:

  • 可以读(或写)文本:

    这可以将所需的字符串填充到 3 个文本框txtSkill1,,txtSkill2txtSkill3

    Sub ReadTextFile()
      Dim lineCount As Integer = 0
      Dim rndInstance As New Random
      Dim idx As Integer = 0
      Dim selectedLine As String = ""
    
      Dim txt As String = "Skills.txt"
      If Not File.Exists(txt) Then
          File.Create(txt).Dispose()
    
          Dim objWriter As New System.IO.StreamWriter(txt, True)
          ' 2 sample text lines:
          objWriter.WriteLine("Negotiating - Interpersonal - Working independently")
          objWriter.WriteLine("Goal oriented - Leadership - Teamwork")
          objWriter.Close()
      End If
    
      lineCount = File.ReadAllLines(txt).Length
      idx = rndInstance.Next(1, lineCount + 1) ' the index can be random if you want, or run from (1 to lineCount)
      selectedLine = ReadLineWithNumberFrom(txt, idx)
    
      Dim pattern As String = "-" ' split on hyphens
      Dim subStrings() As String = Regex.Split(selectedLine, pattern)
      txtSkill1.Text = subStrings(0)
      txtSkill2.Text = subStrings(1)
      txtSkill3.Text = subStrings(2)
    End Sub
    
  • 可以从特定的行号读取字符串:

    Function ReadLineWithNumberFrom(filePath As String, ByVal lineNumber As Integer) As String
      Using file As New StreamReader(filePath)
        ' Skip all preceding lines: 
        For i As Integer = 1 To lineNumber - 1
            If file.ReadLine() Is Nothing Then
                Throw New ArgumentOutOfRangeException("lineNumber")
            End If
        Next
        ' Attempt to read the line you're interested in:
        Dim line As String = file.ReadLine()
        If line Is Nothing Then
            Throw New ArgumentOutOfRangeException("lineNumber")
        End If
        ' Succeeded!
        Return line
      End Using
    End Function
    

现在有了这些功能,您可以写入任何文本文件,从任何文本文件中读取,从任何行号,使用特定的分隔符(这里是连字符 -- char),您可以SaveLoad您需要的任何字符串。


推荐阅读