如何在VB.NET中通过数据表将一个文本框拆分为多列datagridview

问题描述 投票:0回答:1

我正在尝试通过 VB.NET 中的数据表将一个文本框拆分为多列 datagridview。

所以我通过文本框中的事件制作了带有 QR 条形码标签的 2D 条形码扫描仪。

我的代码有问题吗?请指导我

谢谢

Public Class Form2
    Public testtable As New DataTable()
    Protected Overrides Sub OnLoad(e As EventArgs)
        MyBase.OnLoad(e)
        testtable.Columns.AddRange({
        New DataColumn("No", GetType(Integer)),
        New DataColumn("Criteria1", GetType(String)),
        New DataColumn("Criteria2", GetType(String)),
        New DataColumn("Criteria3", GetType(String)),
        New DataColumn("Criteria4", GetType(String)),
        New DataColumn("Criteria5", GetType(String))})
    End Sub
    Private Sub parseBarcodeScan(input As String)
        Dim split = input.Split({","}, StringSplitOptions.RemoveEmptyEntries).Select(Function(s) s.Trim())
    End Sub

    Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = Chr(13) Then
            parseBarcodeScan(TextBox1.Text)
            Try
                testtable.Rows.Add(testtable.Rows.Count + 1, Split(0), Split(1), Split(3), Split(6), Split(8))
                DataGridView1.DataSource = testtable
                TextBox1.Clear()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If
    End Sub

End Class

文本框中的示例数据示例:

A、B、C、D、E、F、G、H、I

上面代码的结果:

标准1 标准2 标准3 标准4 标准5
1 系统.String[] 系统.String[] 系统.String[] 系统.String[] 系统.String[]

想要的结果

标准1 标准2 标准3 标准4 标准5
1 A B D G
vb.net split datatable datagridview textbox
1个回答
0
投票

split
中的
parseBarcodeScan()
变量是方法的局部变量。当您稍后将
Split(0)
Split(1)
Split(2)
...等添加到网格行时,它会调用返回数组的方法,然后在数组上隐式调用
ToString()
以显示输出。这就是为什么你会看到
System.String[]

要修复此问题,请使用

Function
而不是
Sub
来表示
parseBarcodeScan()
返回结果:

Private Function parseBarcodeScan(input As String) As List(Of String)
    Return input.Split({","}, StringSplitOptions.RemoveEmptyEntries).Select(Function(s) s.Trim()).ToList()
End Sub

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    If e.KeyChar = Chr(13) Then
        Dim items = parseBarcodeScan(TextBox1.Text)
        Try
            testtable.Rows.Add(testtable.Rows.Count + 1, items(0), items(1), items(3), items(6), items(8))
            DataGridView1.DataSource = testtable
            TextBox1.Clear()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.