我正在开发一个基本的应用程序,它可以让您跟踪最多3种技能所获得的经验。技能的名称在组合框中(不确定是否最好),并且起始值和结束值在文本框中。
我想添加一个保存按钮,用于保存结束值和所选技能,当按下加载按钮时,它将使用已保存的技能填充组合框,并将旧的结束值输入到新的开始值中。
我整天都在努力,寻找很长一段时间以来,我一直在想出类似的解决方案,但是似乎没有什么可行。我还是个初学者,所以有些我不了解的解决方案。另外,这必须适用于VBNet。
我遇到的最接近的解决方案是:
File.WriteAllText("C:\Data.txt", String.Join("|", new String({TextBox1.Text, TextBox2.Text, TextBox3.Text}))
我希望该文件与项目保留在主目录中。这样对组合框也适用,以及如何将值重新载入?
我仍然是VB的新手,希望这个问题有意义。
答案 0 :(得分:0)
如果我的想法正确,请在下面找到一些可以帮助您的功能:
一个人可以读取(或写入)文本:
这可以将所需的字符串填充到3个文本框txtSkill1
,txtSkill2
,txtSkill3
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}}您需要的任何字符串。