【问题标题】:Multiline Textbox to Datagridview多行文本框到 Datagridview
【发布时间】:2016-04-07 19:20:30
【问题描述】:

我有一个具有这种外观的多行文本框:

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))

但它说它超出了界限......谢谢!

编辑: “索引超出范围异常”错误。

如果我将文本框的值粘贴到 microsoft word 中,它们会像这样:

【问题讨论】:

标签: vb.net datagridview


【解决方案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

未经测试,但它应该让你在正确的位置! *编辑:测试后更新

【讨论】:

  • 我也有同样的错误。“索引超出范围异常”。
  • 我做了一些更改,但在测试后运行完美。请记住,我不确定您要为列命名什么,因此在“DatagridView.Columns.add() 部分中,插入您希望这些列显示为的方式(首先作为名称用于稍后访问该列,其次如图所示给用户)。请记住,我假设您现在只需要 1 行数据。
  • 不,那样不行。 textbox2.text 是 rs232 连接的输出,很奇怪。我可以用计时器做到这一点,稍后我会发布我的答案。我认为这不是最好的方法,但它确实有效
  • 我添加了一个答案顺便说一句!
【解决方案2】:
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

我真的不知道为什么,但它是这样工作的。有人知道更好/更清洁的方法吗?提示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多