Richtextbox 到 datagridview

Richtextbox to datagridview

我在 richtextbox 中有几行信息,它们之间有分隔符。我想将它加载到带有 columns
的 datagridview 中 编号 |名称 |排名|状态

我需要用“;”分割它。

我的代码没有使用分隔符。

Dim Separador As Char = ";"
Dim datagrid As New DataTable
Dim dr As DataRow

'==========================================
datagrid.Columns.Add("ID")
datagrid.Columns.Add("Name")
datagrid.Columns.Add("Rank")
datagrid.Columns.Add("Status")

dr = datagrid.NewRow()
'==========================================

Dim myList1 As New List(Of String)
myList1.AddRange(RichTextBox2.Lines)
DataGridView1.ColumnCount = 1

Dim row As String()
Dim counter As Integer = 0
Dim columnIndex As Integer = 0
'Initialize maximum rows needed
DataGridView1.Rows.Add(1000)
For index = 0 To RichTextBox2.Lines.Count - 1
    row = New String() {myList1(index)}
    'Fill per row and cell
    DataGridView1.Rows(counter).Cells(columnIndex).Value = row(0).ToString()
    counter += 1
    If counter = 1000 Then
        columnIndex += 1
        'Add new column
        Dim col As New DataGridViewTextBoxColumn
        ' DataGridView1.Rows.Add(col)
        '   DataGridView1.Columns.Add(col)
        counter = 0
        DataGridView1.DataSource = datagrid
    End If
Next

通过将每一行数据解析为 class,您可能会获得更多实用性;然后可以将该数据存储在列表中;并且该列表可以是 DataGridView 的数据源。

一旦掌握了它,一旦数据在列表中,就可以很容易地使用 LINQ 操作数据。

例如,在表单上使用 RichTextBox1 和 DataGridView1:

Public Class Form1

    Public data As New List(Of Datum)

    Public Class Datum
        Property ID As Integer
        Property Name As String
        Property Rank As String
        Property Status As String
    End Class

    Sub FillDGV()
        DataGridView1.DataSource = data

    End Sub

    Sub ExtractData()
        data.Clear()

        For Each line In RichTextBox1.Lines
            Dim parts = line.Split(";"c)
            If parts.Count = 4 Then
                data.Add(New Datum() With {
                         .ID = CInt(parts(0)),
                         .Name = parts(1),
                         .Rank = parts(2),
                         .Status = parts(3)})

            End If
        Next

    End Sub

    Sub FillRTB()
        For i = 1 To 10
            RichTextBox1.AppendText($"{i};{ChrW(64 + i)};{10 - i};✓" & vbLf)
        Next

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FillRTB()
        ExtractData()
        FillDGV()

    End Sub

End Class