如何在 VB.net 中以编程方式填充 DataGridViewComboBoxColumn



我一直在为此挠头。

所以我在设计模式下向我的表单添加了datagridview

数据网格视图有 2 列,一列是文本框列,另一列是组合框列。

我已经弄清楚了如何以编程方式填充文本框的单元格,但是我无法弄清楚使用哪个属性来填充组合框列。

我只是想有一个有 3 个选项的dropdown。任何想法都会很棒。

PS:我两天前刚接 VB.net,所以如果问题是原始的:),我深表歉

如果你的组合框中有DataSource,你可以这样做

Dim dgvcc As New DataGridViewComboBoxCell
With dgvcc
   .DataSource = answerStr
   .ValueMember = "CampaignAnswerId"
   .DisplayMember = "Answer"
End With
DataGridViewName.Item(columnIndex, rowIndex) = dgvcc

或者你可以这样做

Dim dgvcc As New DataGridViewComboBoxCell
dgvcc.Items.Add("test1")
dgvcc.Items.Add("test2")
dgvcc.Items.Add("test3")
DataGridViewName.Item(columnIndex, rowIndex) = dgvcc

请注意,当您在DataGridView内循环时,您必须执行此操作。

For rowIndex as integer = 0 To DataGridViewName.Rows.Count - 1
    Dim dgvcc As New DataGridViewComboBoxCell
    dgvcc.Items.Add("test1")
    dgvcc.Items.Add("test2")
    dgvcc.Items.Add("test3")
    DataGridViewName.Item(yourtextboxcolumnIndex, rowIndex) = dgvcc
Next

试试这个:

'Declare ComboBoxColumn
Dim cbColumn As New DataGridViewComboBoxColumn
cbColumn.Name = "Column ComboBox"
'Add Values 
For value As Integer = 0 To 5
    cbColumn.Items.Add("Value = " & value.ToString)
Next
'Add ComboBox 
DataGridView1.Columns.Add(cbColumn)

我在DataGridView_RowsAdded事件中这样做

我的代码如下所示:

    Dim qualifierCell As DataGridViewComboBoxCell =
        DirectCast(gridAddTable.Rows(e.RowIndex).Cells(gtQualifier.Index), DataGridViewComboBoxCell)
       'gridAddTable.Rows(e.RowIndex).Cells(gtQualifier.Index)
    For t As Int32 = 0 To tableMnemonics.Count - 1
        qualifierCell.Items.Add(tableMnemonics(t))
    Next

笔记:

你可能已经注意到我使用了gtQualifier.Index。 我更喜欢使用单元格的实际名称,但您也可以使用 Cell("gtQualifier") 或仅使用索引:在我的情况下为 Cell(0)。

你可以跳过 DirectCast 调用(直接在它之后使用注释的代码),但随后 Visual Studio 会警告你隐式强制转换(没什么大不了的)在 C# 中,你需要显式强制转换,因为它不执行隐式强制转换。 你会写:

 (DataGridViewComboBoxCell)gridAddTable.Rows(e.RowIndex).Cells(gtQualifier.Index)

如果在 DataGridView_RowsAdded 事件中对此进行编码,则需要确保在调用 InitializeComponents 之前填充表助记符,因为 InitializeComponents 会添加第一个新行。 初始化组件调用位于 .设计器文件。(在 C# 中,New 位于 FormName.cs 文件中)

或者,您可以将此代码放在 UserAddRow 事件中。 在这种情况下,您需要填充窗体的 Load 事件中第一个添加的行。

相关内容

  • 没有找到相关文章

最新更新