2016-11-25 157 views
1

愚蠢的問題在這裏,但這裏是我的代碼:寫入文本框?

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來獲得價值。

+0

用於添加新行的擴展方法你想把所有的值放入一個文本框? – Plutonix

+0

是的。謝謝 。 – BobNoobGuy

+0

我想你只是爲了學習或調試目的而這樣做。 –

回答

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

TextBox1MultiLine顯示Environment.NewLine

此外,如果你正在尋找的東西像AppendLine,使用方法:

Me.TextBox1.AppendText("something" & Environment.NewLine) 
1

除了禮的回答,如果你是懶惰和我一樣,不想寫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 
+0

只需重命名擴展方法寫入'WriteLine',如果你喜歡它被調用。 :) –

+1

因爲問題的標題,我打算將擴展方法添加到答案,但閱讀此[評論](http://stackoverflow.com/questions/40810596/writeline-to-textbox/40810768#writment68842593_40810596)改變主意。但問題標題需要這樣的答案:) –

+1

對我來說似乎並不懶惰:]懶惰可能是通常的'TextBox1.Text&= item&vbCrLf',但它不會滾動到最後一行,如'.AppendLine'確實。從'.AppendLine'參考源中我發現有趣的是,它選擇文本的結尾並替換選擇。 'Textbox.Paste(String)'使用相同的內部方法替換選擇,但也清除了撤銷緩衝區。 – Slai