|
■No87980 (太麺 さん) に返信 > また記事を見る限り列全体をコンボボックスにしているようですがColumnTypeをセルごとに変えることは可能でしょうか?
可能です。最初にご自身で書かれていたように、 列ごとに DataGridiViewComboBoxColumn を割り当てる代わりに、 セルごとに DataGridiViewComboBoxCell を割り当てるだけで OK です。 データバインドはしてもしなくても OK。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load DataGridView1.DataSource = Nothing DataGridView1.AllowUserToAddRows = False DataGridView1.RowCount = 10 DataGridView1.ColumnCount = 4
Dim cbb As DataGridViewComboBoxCell cbb = New DataGridViewComboBoxCell() cbb.FlatStyle = FlatStyle.Flat cbb.Items.Add("R4-P17") cbb.Items.Add("R2-D2") cbb.Items.Add("BB-8") cbb.Items.Add("C-3PO") cbb.Value = "R2-D2" DataGridView1(2, 1) = cbb
Dim dict As New Dictionary(Of Decimal, String) dict.Add(8D, "Oreo") dict.Add(7D, "Nougat") dict.Add(6D, "Marshmallow") dict.Add(5D, "Lollipop") dict.Add(4.4D, "KitKat") dict.Add(4.1D, "Jelly Bean") dict.Add(4D, "Ice Cream Sandwich") dict.Add(3D, "Honeycomb")
cbb = New DataGridViewComboBoxCell() cbb.FlatStyle = FlatStyle.Flat cbb.DataSource = dict.ToArray() cbb.ValueMember = "Key" cbb.DisplayMember = "Value" cbb.Value = 5D DataGridView1(1, 3) = cbb End Sub
ただし列テンプレートを使わない場合、共有行とはならず、 行ごとに個別の DataGridViewRow インスタンスが生成されます。
行数があまりに多くなる場合には、パフォーマンス面にもご注意ください。
|