我有一些数据表。我循环浏览我拥有的数据列数。在循环中,我创建了一个datagridview,数据源是该索引处的给定数据表。然后,如何将列更改为类型Combobox?我知道如何在设计师身上执行此操作,但是在编程上呢?我尝试了:
For each column as DataGridViewColumn in table.Columns
column.CellType = DataGridViewComboBoxColumn
Next
显然这不起作用。CellType是仅读取属性,我不能简单地将其设置为等于类类型。我知道这可能很简单,我知道我很愚蠢。请帮助。
您不需要将整列定义为组合框。请参阅我的示例,其中您对每行的ComboBox具有相同值的定义。我还提供了一种仅用ComboBox替换单个单元格的方法。查看"人"列是如何放置ComboBox的TextBoxColumn。它还向您展示了如何分配值并设置默认值。复选框/单元格是相同的概念。
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim NewCol As New DataGridViewComboBoxColumn
DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.Name = "ID", .HeaderText = "ID"})
With NewCol
.Name = "ComboBoxCol"
.HeaderText = "Language"
.Items.Add("VB.NET")
.Items.Add("C#")
.Items.Add("F#")
.DefaultCellStyle.NullValue = .Items(0)
End With
DataGridView1.Columns.Add(NewCol)
DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.Name = "PeopleCol", .HeaderText = "People"})
Dim xRow As String() = {"1"}
DataGridView1.Rows.Add(xRow)
DataGridView1.Rows.Add({"2"})
DataGridView1(1, 0).Value = "C#"
Dim xPeople1 As New DataGridViewComboBoxCell
With xPeople1
.Items.Add("Santa")
.Items.Add("Satan")
.Value = .Items(0)
End With
DataGridView1(2, 0) = xPeople1
Dim xPeople2 As New DataGridViewComboBoxCell
With xPeople2
.Items.Add("God")
.Items.Add("Allah")
.Value = .Items(1)
End With
DataGridView1(2, 1) = xPeople2
End Sub
End Class