VB.net экспортирует 2 конкретные строки в DataGridView - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь прочитать все строки текстового файла и экспортировать только две определенные строки в DataGridView. У меня большая часть кода работает, однако я столкнулся с проблемой, когда данные не всегда находятся в одной строке.

Я использую VB.net Вот код, который я использую.

Dim lines() As String = File.ReadAllLines(textfile)
For i As Integer = 0 To lines.Length - 1
    If lines(i).Contains("First*") Then
         Dim Array1() As String = lines(i).Split("*")
         Dim Array2() As String = lines(i + 1).Split("*")
         DataGridView1.Rows.Add(Array1(1), Array2(1))
    End If
Next

Мне нужно сделать что-то подобное, но я не уверен, как.

Dim lines() As String = File.ReadAllLines("C:\People.txt")
For i As Integer = 0 To lines.Length - 1
    If lines(i).Contains("First*") Then
         Dim Array1() As String = lines(i).Split("*")
    End If
    If lines(i).Contains("Last*") Then
         Dim Array2() As String = lines(i).Split("*")
    End If
    DataGridView1.Rows.Add(Array1(1), Array2(1))
Next

Мой DataGridView содержит два столбца (FirstName, LastName). Поэтому я читаю все строки, и когда он попадает в строку, начинающуюся с «First *», он собирает имя и обычно под этой строкой указывается фамилия. Я обнаружил, что фамилия не всегда находится непосредственно под ним, поэтому мне нужно также выполнить поиск строки, содержащей «Last *», и добавить обе в DataGridView. Я пытаюсь просто ввести имя и фамилию каждого человека в DataGridView.

Вот пример того, как может выглядеть текстовый файл.

First*Bob
Last*Dole
Address*12 Way
Zip*00000
First*John
Middle*M
Last*Smith
Address*13 Way
Zip*00000

Вы можете видеть на втором человеке, что я получу неверную информацию. Цени любую помощь.

Это результат DataGridView, который я ищу.

FirstName | LastName
----------------------
Bob       | Dole
John      | Smith

1 Ответ

1 голос
/ 08 октября 2019

Вы должны только добавить строку изнутри блока If для проверки «Фамилии», а также вам необходимо сохранить переменную имени из области более высокого уровня, чем в вашем примере.

Этот кодне выполняет проверку ошибок:

Dim firstName As String = String.Empty
Dim lastName As String = String.Empty
For Each s As String In File.ReadAllLines("C:\People.txt")
  If s.Contains("First*") Then
    firstName = s.Split("*")(1)
  End If
  If s.Contains("Last*") Then
    lastName = s.Split("*")(1)
    dgv.Rows.Add(firstName, lastName)
  End If
Next
...