セル単位ごとにdatagridviewにリストボックスをつけるには
投稿者 shu  (社会人)
投稿日時
2013/4/23 08:59:47
セルに対しDataSourceを設定するとよいです。
タイミングはセルへの移動時とかリスト内容が確定したタイミングなどが
よいのではないでしょうか。
Public Class Form1
Private tbl As DataTable
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
tbl = New DataTable
With tbl.Columns
.Add("Col1", GetType(String))
.Add("Col2", GetType(String))
.Add("ColList", GetType(String()))
End With
Column1.DataPropertyName = "Col1"
Column2.DataPropertyName = "Col2"
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = tbl
tbl.Rows.Add({"aaa", "", New String() {"ccc1", "ccc2", "ccc3"}})
tbl.Rows.Add({"vvv", "", New String() {"ccc4", "ccc5", "ccc6"}})
End Sub
Private Sub DataGridView1_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
If e.ColumnIndex = Column2.Index Then
Dim row = DirectCast(DataGridView1.Rows(e.RowIndex).DataBoundItem, DataRowView).Row
With DirectCast(DataGridView1.Item(e.ColumnIndex, e.RowIndex), DataGridViewComboBoxCell)
.DataSource = row("ColList")
End With
End If
End Sub
End Class
タイミングはセルへの移動時とかリスト内容が確定したタイミングなどが
よいのではないでしょうか。
Public Class Form1
Private tbl As DataTable
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
tbl = New DataTable
With tbl.Columns
.Add("Col1", GetType(String))
.Add("Col2", GetType(String))
.Add("ColList", GetType(String()))
End With
Column1.DataPropertyName = "Col1"
Column2.DataPropertyName = "Col2"
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = tbl
tbl.Rows.Add({"aaa", "", New String() {"ccc1", "ccc2", "ccc3"}})
tbl.Rows.Add({"vvv", "", New String() {"ccc4", "ccc5", "ccc6"}})
End Sub
Private Sub DataGridView1_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
If e.ColumnIndex = Column2.Index Then
Dim row = DirectCast(DataGridView1.Rows(e.RowIndex).DataBoundItem, DataRowView).Row
With DirectCast(DataGridView1.Item(e.ColumnIndex, e.RowIndex), DataGridViewComboBoxCell)
.DataSource = row("ColList")
End With
End If
End Sub
End Class
投稿者 hinaka  (社会人)
投稿日時
2013/4/23 14:45:57
早速のご返答ありがとうございます。
参考にさせていただきます。設定してうまく動きましたらご報告させていただきます。
参考にさせていただきます。設定してうまく動きましたらご報告させていただきます。
1列3行目には、その県ごとの市町村名のリストボックス選択が
できるようにしたいのですが、どのようなプログラムになるのでしょうか。
列ごとのリストボックスの設定は、サイトに例があるのですが
セル単位は無理なのでしょうか。
よろしくお願いします。