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
我在 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