我一直在为此挠头。
所以我在设计模式下向我的表单添加了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 事件中第一个添加的行。