使用している構文は少し奇妙です。新しい行を追加し、同時に値を設定できるようにするオーバーロードがあります。
また、文字列配列をセルのフィールドにすることはできません。DataTable を使用する代わりに、カスタム クラスを作成し、それらのリストを DataGridView にバインドできます。このようにして、文字列の配列である基になるフィールドを作成し、それらを必要に応じてフォーマットするパブリック プロパティを作成して、それを DataGridView に表示することができます。
これにアプローチする方法のサンプルを次に示します。
Imports System.ComponentModel
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim sales As New BindingList(Of SaleTransaction)
For i As Integer = 1 To 6
sales.Add(New SaleTransaction(i))
Next
' None of this is necessary since the DGV will automatically read the public properties.. '
DataGridView1.AutoGenerateColumns = False
Dim itemsColumn As New DataGridViewTextBoxColumn
itemsColumn.HeaderText = "Items"
itemsColumn.ValueType = GetType(String)
itemsColumn.DataPropertyName = "Items"
DataGridView1.Columns.Add(itemsColumn)
Dim dateColumn As New DataGridViewTextBoxColumn
dateColumn.HeaderText = "Date Sold"
dateColumn.ValueType = GetType(String)
dateColumn.DataPropertyName = "DateSold"
DataGridView1.Columns.Add(dateColumn)
DataGridView1.DataSource = sales
End Sub
Public Class SaleTransaction
Private _items As List(Of String)
Public ReadOnly Property Items As String
Get
Return String.Join(", ", _items)
End Get
End Property
Public Property DateSold As Date
Public Sub New(ByVal itemNumber As Integer)
Me._items = New List(Of String) From {"Pencil" & itemNumber, "Sharpner" & itemNumber}
Me.DateSold = Date.Parse(String.Format("0{0}/0{0}/0{0}", itemNumber))
End Sub
End Class
End Class