我需要将下拉列表显示到几行中的一个特定行。我的 dataGridView 有 2 列(参数和值),我在代码中动态添加 3 行。对于所有 3 行,参数文本是固定的,用户不能修改。对于第一行,参数文本为“prm1”,将从下拉列表中选择值文本。其他 2 行,值文本将是用户输入的文本框。我尝试搜索但找不到答案。请在这里帮助我。
问问题
19183 次
2 回答
5
可以在运行时替换特定的 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;
}
您也可以通过其他方式执行此操作,并将 DataGridViewComboBoxColumn 中的特定组合框单元格替换为 DataGridViewTextBoxCell。
不过有一件事 - 虽然这会起作用,但更好的可用性可能只是来自将一些组合框设置为只读。
于 2012-08-10T12:42:35.097 回答
2
请考虑使用Form Designer中网格的右键单击上下文菜单项Edit Columns...将ComboBox列添加到网格。要添加列,需要单击Edit Columns对话框的Add按钮,然后选择Type = ,如下所示:DataGridViewComboBoxColumn
请注意:您还需要使用列的Items或DataSource属性来填充 ComboBox 的下拉列表。
于 2012-08-10T12:09:36.310 回答