将ComboBox添加到特定行的datagridview

我需要向几行中的一个特定行显示下拉列表。 我的dataGridView有2列(参数和值),我在代码中动态添加3行。 对于所有3行,参数文本是固定的,用户不能修改。 对于第一行,参数文本为“prm1”,将从下拉列表中选择值文本。 其他2行,Value文本将是User输入的文本框。 我试着搜索但找不到答案。 请帮帮我。

可以在运行时替换特定的DataGridView单元格 – 例如,在您需要一个单元格中的combobox的情况下,您可以拥有DataGridViewTextBoxColumn并替换第一行中的单元格。 像这样的东西:

 void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { List books = new List(); books.Add(new Book { bookID = 1, bookName = "Test-Driven Development (Kent Beck)" }); books.Add(new Book { bookID = 2, bookName = "Refactoring (Martin Fowler)" }); books.Add(new Book { bookID = 3, bookName = "Code Complete: 2nd Edition (Steve McConnell)" }); DataGridViewComboBoxCell c = new DataGridViewComboBoxCell(); c.DataSource = books; c.Value = 1; c.ValueMember = "bookID"; c.DisplayMember = "bookName"; dataGridView1.Rows[0].Cells[0] = c; } 

您也可以通过其他方式执行此操作,并使用DataGridViewTextBoxCell从DataGridViewComboBoxColumn替换特定的combobox单元格。


但有一件事 – 虽然这会起作用,但更好的可用性可能只是将一些combobox设置为只读。

请考虑将“ ComboBox”列添加到网格,并在“ 表单设计器”中右键单击上下文菜单项“ 编辑列… ”。 要添加列,需要单击“ 编辑列”对话框的“ 添加”按钮,然后选择Type = DataGridViewComboBoxColumn ,如下所示:

在此处输入图像描述

请注意 :您还需要使用列的Items或DataSource属性来填充ComboBox的下拉列表。