Глупый вопрос, но вот мой код:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt As DataTable
    dt = CType(dgrGrid.DataSource, DataTable).Copy
    Dim drs() As DataRow = dt.Select("CustomerID = 222")
    For Each row As DataRow In drs
        For Each item As Object In row.ItemArray
            Debug.WriteLine("{0}", item)
        Next
    Next
End Sub

Я вижу в окне отладки все свои значения.

Теперь, если мне нужно выплюнуть это значение в текстовое поле, я не знаю, как это сделать.

Цель состоит в том, чтобы продолжать использовать itemArray для получения значения.

1
BobNoobGuy 25 Ноя 2016 в 21:20

2 ответа

Лучший ответ

Вы можете использовать что-то вроде этого:

Dim rows = dt.Select() ' Or select using a criteria like you did
Me.TextBox1.Text = String.Join(Environment.NewLine, _
    rows.Select(Function(r) String.Join(",", r.ItemArray)))

TextBox1 должен быть MultiLine, чтобы показать Environment.NewLine.

Также, если вы ищете что-то вроде AppendLine, используйте:

Me.TextBox1.AppendText("something" & Environment.NewLine)
2
Reza Aghaei 25 Ноя 2016 в 19:07

В дополнение к ответу Резы, и если вы ленивы, как я, и не хотите везде писать Environment.NewLine, вы можете создать метод расширения для добавления новых строк:

Imports System.Runtime.CompilerServices

Public Module Extensions
    <Extension()> _
    Public Sub AppendLine(ByVal TargetTextBox As TextBox, ByVal Text As String)
        TargetTextBox.AppendText(Text & Environment.NewLine)
    End Sub
End Module

Использование:

For Each item As Object In row.ItemArray
    TextBox1.AppendLine(item.ToString())
Next
1
Visual Vincent 25 Ноя 2016 в 19:22