C# 将ComboBox添加到特定行的datagridview

C# 将ComboBox添加到特定行的datagridview,c#,winforms,datagridview,C#,Winforms,Datagridview,我需要在几行中的某一行显示下拉列表。 我的dataGridView有2列(参数和值),我正在代码中动态添加3行。对于所有3行,参数文本是固定的,用户不能修改。对于第一行,参数文本为“prm1”,值文本将从下拉列表中选择。其他2行,值文本将是用户输入的文本框。我试着搜索,但找不到答案。请在这里帮助我。 < P>请考虑将CorBOox列添加到网格中,并在表单设计器中使用右键单击上下文菜单项 >编辑列…< /强>。要添加列,需要单击编辑列对话框的添加按钮,然后选择类型=DataGridViewComb

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

< P>请考虑将CorBOox列添加到网格中,并在表单设计器中使用右键单击上下文菜单项<强> >编辑列…< /强>。要添加列,需要单击编辑列对话框的添加按钮,然后选择类型=
DataGridViewComboBoxColumn
,如下所示:


请注意:您还需要使用列的或属性来填充组合框的下拉列表。

可以在运行时替换特定的DataGridView单元格-例如,在您希望在一个单元格中有一个组合框的情况下,您可以使用DataGridViewTextBoxColumn来替换组合框中的单元格第一排。大概是这样的:

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    List<Book> books = new List<Book>();
    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;
}
void dataGridView1\u DataBindingComplete(对象发送方,DataGridViewBindingCompleteEventTarget)
{
列表书籍=新列表();
Add(新书{bookID=1,bookName=“测试驱动开发(kentbeck)”);
Add(新书{bookID=2,bookName=“重构(Martin Fowler)”});
添加(新书{bookID=3,bookName=“代码完成:第二版(Steve McConnell)”);
DataGridViewComboxCell c=新的DataGridViewComboxCell();
c、 数据源=书籍;
c、 数值=1;
c、 ValueMember=“bookID”;
c、 DisplayMember=“bookName”;
dataGridView1.行[0]。单元格[0]=c;
}
您也可以通过另一种方式执行此操作,并将DataGridViewComboBoxColumn中的特定combobox单元格替换为DataGridViewTextBoxCell



不过有一件事——虽然这会起作用,但将一些组合框设置为只读可能会带来更好的可用性。

我不认为标题推断的方法是正确的。您可以将第一列设为a,并将其设置为某些行的只读,而不是尝试使列的单元格类型因行而异。我似乎无法将列表绑定为
DataGridViewComboxCell
的数据源?