Сохранение содержимого нескольких текстовых полей и, возможно, комбинированных полей - PullRequest
0 голосов
/ 14 декабря 2018

Я работаю над базовым приложением, которое позволяет вам отслеживать опыт, накопленный на 3 навыках.Названия навыков находятся в поле со списком (не уверен, что лучшие), а начальные и конечные значения - в текстовых полях.

Я хочу добавить кнопку сохранения, которая сохраняет конечные значения и выбранные навыки,при нажатии кнопки загрузки он заполняет поля со списком сохраненными навыками и вводит старые конечные значения в новые начальные.

Я работал над этим весь день, долго искал, я нашел похожие решения, но, похоже, ничего не работает.Я все еще немного новичок, поэтому некоторые решения я не понимаю.Кроме того, это должно работать для VBNet.

Наиболее близкое решение, с которым я столкнулся:

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

Я бы хотел, чтобы файл оставался с проектом в главном каталоге, хотя,Будет ли это работать и для полей со списком, и как загрузить значения обратно?

Я все еще новичок в VB, надеюсь, этот вопрос имеет смысл.

1 Ответ

0 голосов
/ 14 декабря 2018

Если я правильно понял вашу идею, найдите несколько функций ниже, если они могут помочь:

  • Можно прочитать (или написать) текст:

    Это можнозаполните нужную строку до 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
    

Теперь с помощью функций вы можете записывать в любой текстовый файл, читать из любого текстового файла, с любого номера строки, с определенным разделителем (здесь дефис - символ), вы можете Save и Load любая нужная вам строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...