在我的文件夹中全部选择三个文本文件后,我想立即将三个文本文件加载到三个数据网格视图中。我希望它自动将我突出显示的三个文本文件一起加载到三个数据网格视图中。我已经使用 VB.NET 在我的表单中创建了。
Private Sub PictureBox1_Click_1(sender As Object, e As EventArgs) Handles PictureBox1.Click
If OpenFileDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK _
Then
DataGridView1.Rows.Clear()
For Each Line In My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName).Split(Environment.NewLine)
DataGridView3.Rows.Add(Split(Line, ControlChars.Tab))
DataGridView2.Rows.Add(Split(Line, ControlChars.Tab))
DataGridView1.Rows.Add(Split(Line, ControlChars.Tab))
Next
End If
End Sub
您需要迭代 openFileDialog 返回的文件数组。
此外,最好将代码分割成更小的单元,因为这样更容易调试和维护。
我在窗体上放置了一个按钮和三个 DataGridView 控件,并使用了以下代码:
Imports System.IO
Public Class Form1
Function GetDataFiles() As String()
Using ofd As New OpenFileDialog() With {.InitialDirectory = "C:\Temp",
.DefaultExt = ".csv",
.Multiselect = True,
.Title = "Select 3 files"}
If ofd.ShowDialog = DialogResult.OK Then
Return ofd.FileNames
End If
End Using
Return Array.Empty(Of String)
End Function
Sub LoadData()
Dim nFiles = 3
Dim srcFiles = GetDataFiles().Take(nFiles)
If srcFiles.Count <> nFiles Then
' Probably need to ask user to select nFiles files.
Exit Sub
End If
'TODO: Maybe find a better way of getting the DGVs.
Dim dgvs = {DataGridView1, DataGridView2, DataGridView3}
For i = 0 To nFiles - 1
'TODO: Possibly read the files first to get the number of columns.
Dim nCols = 4
Dim dt = New DataTable()
For j = 1 To nCols
dt.Columns.Add($"DT{i}-Col{j}")
Next
Dim data = File.ReadAllLines(srcFiles(i)).Where(Function(s) Not String.IsNullOrEmpty(s))
For Each s In data
dt.Rows.Add(s.Split(ControlChars.Tab))
Next
dgvs(i).DataSource = dt
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
LoadData()
End Sub
End Class