DataGridViewにList(Of クラス)の内容を表示する - VB.NET
DataGridViewにListの中身を表示したい時がある。一つ一つ行を追加しているとすごい時間がかかるため、これをやりたい。
でも、List(Of String)
ではできないため、クラスを作らないといけないのが微妙。
ポイント
DataGridView.AutoGenerateColumns = False
にすることで、DataSourceで設定したときに自動で列を追加されないようにする。Columns.DataPropertyName
に表示したいプロパティ名を指定する。DataGridView.DataSource
に表示したいListを設定する(※ Listの方は独自のクラスでないと無理っぽい)
以下が実際に試したソース
Form1にはDataGridView1
というDataGridViewが配置してあるとする。
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' DataSourceの設定によって、自動で列が追加されないようにする DataGridView1.AutoGenerateColumns = False ' テキストボックス列の追加 Dim col1 As New DataGridViewTextBoxColumn col1.Name = "id" col1.HeaderText = "ID" ' DataPropertyName でクラスに定義されているプロパティ名を指定する col1.DataPropertyName = "Id" DataGridView1.Columns.Add(col1) Dim col2 As New DataGridViewTextBoxColumn col2.Name = "name" col2.HeaderText = "NAME" col2.DataPropertyName = "Name" DataGridView1.Columns.Add(col2) ' 入れるテストデータの作成(実際にはSQLとかの結果から作成する?) Dim testList As New List(Of Test) testList.Add(New Test("1", "Taro")) testList.Add(New Test("2", "Jiro")) ' DataGridViewにバインド DataGridView1.DataSource = testList End Sub End Class Public Class Test Public Property Id As String Public Property Name As String Public Sub New(ByVal id As String, ByVal name As String) Me.Id = id Me.Name = name End Sub End Class