0

このコードは、数か月前に Web で見つけました。datagridview 列を作成するのに最適です。コンボボックス列の作成に使用したことはありません。今、私はそれを行う必要があり、列に値を割り当てる方法を理解できません。そして、このコードを最初に見つけた場所が見つかりません。現在、その断片を見つけることができますが、完全なものはありません。

textboxcolumn を作成し、値を含む dgv 行を作成するのは簡単です。しかし、コンボボックス列の作成方法がわかりません。ちなみに、この場合、列は各行に同じコンボボックス値を使用できます。

ここに私が持っているコードがあります:

dgv にバインドするデータを保持するデータ テーブルを作成します。

Dim dt As New DataTable("Grid")
Dim dr As DataRow
dtSetupColumns(dt)

Public Sub dtSetupColumns(ByRef dt As DataTable)
        dt.Columns.Add("name_l", GetType(String))
        dt.Columns.Add("name_f", GetType(String))
        dt.Columns.Add("state", GetType(String))
End Sub

データテーブルに値を割り当てます。

dr = dt.NewRow()
dr("name_l") = ' from query table
dt.Rows.Add(dr)

DataGridView 列を作成します。

dgvCreateColumns(dgv)

Public Sub dgvCreateColumns(ByRef inDataGridView As DataGridView)
  With inDataGridView.Columns
    .Add(dgvCreateColumn(ColumnStyle.TextBoxColumn, String.Empty, "Last Name", "name_l", 80, DataGridViewContentAlignment.MiddleLeft))
    .Add(dgvCreateColumn(ColumnStyle.TextBoxColumn, String.Empty, "First Name", "name_f", 80, DataGridViewContentAlignment.MiddleLeft))
    .Add(dgvCreateColumn(ColumnStyle.ComboBoxColumn, String.Empty, "State", "state", 80, DataGridViewContentAlignment.MiddleLeft))
  End With
End Sub


Public Shared Function dgvCreateColumn(ByVal ColumnType As ColumnStyle, ByVal format As String, ByVal headerText As String, ByVal dataPropertyName As String, ByVal width As Integer, ByVal alignment As DataGridViewContentAlignment, Optional ByVal bMakeVisible As Boolean = True, Optional ByVal inReadOnly As Boolean = False) As DataGridViewColumn
        Dim dgvC As DataGridViewColumn = Nothing

        Select Case ColumnType
            Case ColumnStyle.ButtonColumn
                dgvC = New DataGridViewButtonColumn
            Case ColumnStyle.CheckBoxColumn
                dgvC = New DataGridViewCheckBoxColumn
            Case ColumnStyle.ComboBoxColumn
                dgvC = New DataGridViewComboBoxColumn
            Case ColumnStyle.ImageColumn
                dgvC = New DataGridViewImageColumn
            Case ColumnStyle.LinkColumn
                dgvC = New DataGridViewLinkColumn
            Case ColumnStyle.TextBoxColumn
                dgvC = New DataGridViewTextBoxColumn
        End Select

        With dgvC
            .DataPropertyName = dataPropertyName
            .DefaultCellStyle.Alignment = alignment
            .DefaultCellStyle.Format = format
            If ColumnType = ColumnStyle.ButtonColumn Then
                '.colum()
            End If
            .HeaderText = headerText
            .Name = headerText
            .ReadOnly = inReadOnly
            If width = 0 Then
                .Visible = False
            Else
                .Width = width
                If bMakeVisible = False Then
                    .Visible = False
                Else
                    .Visible = True

                End If
            End If
        End With

        Return dgvC
    End Function
4

1 に答える 1

0

各行の各セルを通過する必要があります

For i as Integer = 0 to dgv.Rows.Count -1 
   Dim gridComboBox As New DataGridViewComboBoxCell
   gridComboBox.DataSource = dt
   gridComboBox.ValueMember = dt.Columns(0).ColumnName
   dgv.Item(2, i) = gridComboBox 'Change the Cell in Column:2 Row:i to ComboBox
Next
于 2013-03-19T19:18:46.247 に答える