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

时间:2014-11-18 04:25:49

标签: vb.net datagridview datagridviewcomboboxcell

我一直在摸不着头脑。

所以我在设计模式中添加了datagridview到我的表单。

datagridview有2列,一列是textbox列,另一列是combobox列。

我已经想出如何以编程方式填充文本框的单元格,但是我无法确定用于填充组合框列的属性。

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

P.S:我刚刚在2天前拿起了VB.net,所以如果问题很原始,我会道歉:)

3 个答案:

答案 0 :(得分:5)

如果你的组合框中有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

答案 1 :(得分:0)

试试这个:

'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)

答案 2 :(得分:0)

我在 DataGridView_Row Transactions 事件

中执行此操作

我的代码如下:

    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_Row Transactions 事件中对此进行编码,则需要确保在调用 InitializeComponents 之前已填充tableMnemonics ,因为InitializeComponents添加了第一行。 InitializeComponents调用位于 .Designer 文件的 New() 子例程中。 (在C# New 中位于FormName.cs文件中)

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