保存多个文本框和可能的组合框的内容

时间:2018-12-14 05:41:31

标签: vb.net winforms io controls

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

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

我整天都在努力,寻找很长一段时间以来,我一直在想出类似的解决方案,但是似乎没有什么可行。我还是个初学者,所以有些我不了解的解决方案。另外,这必须适用于VBNet。

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

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

我希望该文件与项目保留在主目录中。这样对组合框也适用,以及如何将值重新载入?

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

1 个答案:

答案 0 :(得分:0)

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

  • 一个人可以读取(或写入)文本:

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

    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)来写入任何文本文件,从任何文本文件中读取任何行号,并可以使用Save和{ {1}}您需要的任何字符串。