更改DataGridView中所有单元格的格式以组合



我有一些数据表。我循环浏览我拥有的数据列数。在循环中,我创建了一个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

最新更新