我要求将下拉列表显示为多行中的一个特定行。 我的dataGridView有2列(参数和值),我在代码中动态添加3行。对于所有3行,参数文本是固定的,用户不能修改。对于第一行,参数文本为“prm1”,将从下拉列表中选择值文本。其他2行,Value文本将是User输入的文本框。我试过搜索但找不到答案。请帮帮我。
答案 0 :(得分:4)
可以在运行时替换特定的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;
}
您也可以通过其他方式执行此操作,并使用DataGridViewTextBoxCell从DataGridViewComboBoxColumn替换特定的组合框单元格。
但有一件事 - 虽然这会有效,但更好的可用性可能只是将一些组合框设置为只读。
答案 1 :(得分:2)
请考虑将 ComboBox 列添加到网格,并在表单设计器中右键单击上下文菜单项编辑列... 。要添加列,需要点击修改列对话框的添加按钮,然后选择 Type = DataGridViewComboBoxColumn
,如下所示:
请注意:您还需要使用该列的Items或DataSource属性来填充ComboBox的下拉列表。