我有一个具有这种外观的多行文本框:
A#B
C#
D#E
我希望将datagridview
填充到类似的内容中:
_________
|A|BC|D|E|
我的意思是,我想在有“#”时拆分,但我不想要datagridview
中的多行单元格。
我试过这段代码:
Dim sup() As String = TextBox1.Text.Split(vbCr, vbLf, vbTab, " "c, "#")
DataGridView1.Rows.Add(sup(0), sup(1), sup(2),sup(3))
但它说它超出界限......谢谢!
编辑: “索引超出范围异常”错误。
答案 0 :(得分:1)
如果您确定要将文本框拆分为3#,则可以在datagridview中创建3列后使用类似的内容
Dim myStr As String
Dim substring As String
Dim strArray() As String
Dim columnInt as Integer = 0
myStr = Textbox1.Text
strArray = myStr.Split("#")
For i = 0 to strArray.Length - 1
Datagridview.Rows(0).Cells(columnInt).Value = strArray(i)
columnInt += 1
next
由于我不太确定您希望这些数据如何准确显示,因此如果列数大于3,您可能还需要声明列数。在第一个For语句之前添加此代码:
For i = 0 to strArray.Length - 1
DataGridView.Columns.Add("YourText","YourText")
Next
未经测试,但它应该让你在正确的位置! *编辑:测试后更新
答案 1 :(得分:0)
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
If DataGridView1.RowCount = 1 Then DataGridView1.Rows.Clear()
Call dgvstuff()
Timer1.Stop()
End Sub
Sub dgvstuff()
Dim sup2 = TextBox2.Text.Replace("#", "").Replace(">", " "c)
Dim sup() = sup2.Split(" "c, "#", vbCrLf, vbTab)
With DataGridView1
.Rows(0).Cells(0).Value = sup(1).ToString
.Rows(0).Cells(1).Value = sup(7).ToString
.Rows(0).Cells(3).Value = sup(4).ToString
End With
End Sub
我真的不知道为什么,但它的工作原理是这样的。谁知道更好/更清洁的方式? TKS