Я предполагаю, что ваш текстовый файл будет выглядеть так, если его открыть в блокноте.
1,Smith,Mary,7,45
2,Jones,Bill, 8,15
3,Mathew,Mark,6, 20
4,Luke,John,9,30
Обратите внимание, что пробелов нет. Если есть пробелы, вам может понадобиться использовать .Trim в строках.
У меня есть класс с именем Employee
. В классе есть пользовательский конструктор (Sub New
), который устанавливает все соответствующие свойства. Значения будут получены из текстового файла, как вы увидите через минуту.
Затем в событии нажатия кнопки создается список типа Employee
.
Dim EmpList As New List(Of Employee)
Можетхранить объекты типа Employee. Я использую `List (0f T) вместо массива, потому что мне не нужно заранее знать, сколько строк в файле.
Метод .ReadAllLines
объекта File
возвращаетмассив, содержащий каждую строку в файле как элемент массива. Переберите массив строк, вызывая .Split
в каждой строке, которая возвращает массив, предположительно содержащий каждое из интересующих вас полей. Каждый элемент отправляется в конструктор Employee, и полученный в результате новый Employee добавляется в список. Если в файле есть посторонние пробелы, вам может понадобиться вызвать .Trim
, чтобы избавиться от них
Наконец, я добавил DataGridView в форму во время разработки. Задайте для свойства .DataSource список сотрудников, и ваши данные отобразятся в сетке с заголовками.
Public Class Employee
Public Property ID As String
Public Property LasName As String
Public Property FirstName As String
Public Property Hours As Integer
Public Property Minutes As Integer
Public Sub New(iden As String, lname As String, fname As String, hr As Integer, mn As Integer)
ID = iden
LasName = lname
FirstName = fname
Hours = hr
Minutes = mn
End Sub
End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim EmpList As New List(Of Employee)
Try
Dim result = OpenFileDialog1.ShowDialog
If Not result = Windows.Forms.DialogResult.OK Then
MessageBox.Show("No file selected")
End If
Dim strFileName = OpenFileDialog1.FileName
Dim lines = IO.File.ReadAllLines(strFileName)
For Each line In lines
Dim strFieldValues = line.Split(","c)
EmpList.Add(New Employee(strFieldValues(0), strFieldValues(1), strFieldValues(2), CInt(strFieldValues(3)), CInt(strFieldValues(4))))
Next
DataGridView1.DataSource = EmpList
Catch exFile As IO.FileNotFoundException
MessageBox.Show("Cannot locate the file.", "FileopenDialog", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub