我正在尝试在dataGridView中添加一个ComboBox。
DGV中有5列:复选框、字符串、字符串、组合框、组合框。
这两个组合框列都已经通过VisualStudio设计器配置为DataGridViewComboBoxColumns。我的问题是如何添加行。
我的当前尝试是:列已经定义好了,我通过dataGridView.Rows.Add来添加行。
为此,我使用了一个对象数组。示例:
进一步信息:每个列应该在comboBoxes中具有相同的项目(这些项目是之前通过互联网作为xml加载的)。将数据源设置到两个列会破坏整个DGV(我认为是因为其他列没有数据源)。 简而言之:如何向包含填充有项目的comboboxes的DGV添加行?
此致, NoMad
编辑:这里是一些代码来解决我的问题:
DGV中有5列:复选框、字符串、字符串、组合框、组合框。
这两个组合框列都已经通过VisualStudio设计器配置为DataGridViewComboBoxColumns。我的问题是如何添加行。
我的当前尝试是:列已经定义好了,我通过dataGridView.Rows.Add来添加行。
为此,我使用了一个对象数组。示例:
dataGridViewRow row = new dataGridViewRow();
object[] obj = new object[5] {true, "str1", "str2", null, null};
dataGridView1.Rows.Add(obj);
这段代码没有出现任何错误。但是从逻辑上讲,comboBoxes中没有填充任何内容。
我尝试将数据源设置为行的第四个和第五个单元格:
错误...使用ROW.dataGridViewComboBoxCell.Items.Add: 项目未显示...
通过填充obj[3]和obj[4]来创建一个新的DGVcomboBoxCell或-Column:
Error... :The error message says "The dataGridViewComboBoxCell-Value is invalid.
进一步信息:每个列应该在comboBoxes中具有相同的项目(这些项目是之前通过互联网作为xml加载的)。将数据源设置到两个列会破坏整个DGV(我认为是因为其他列没有数据源)。 简而言之:如何向包含填充有项目的comboboxes的DGV添加行?
此致, NoMad
编辑:这里是一些代码来解决我的问题:
DataGridViewCheckBoxColumn check = new DataGridViewCheckBoxColumn();
check.Name = "Col1";
dataGridView1.Columns.Add(check);
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[1].Name = "Col2";
dataGridView1.Columns[2].Name = "Col3";
object[] row = new object[] { true, "str1", "str2" };
dataGridView1.Rows.Add(row);
DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn();
DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn();
combo1.Name = "Col4";
combo1.Items.Add("100x100");
combo1.Items.Add("200x200");
combo2.Name = "Col5";
combo2.Items.Add("option1");
combo2.Items.Add("option2");
dataGridView1.Columns.Add(combo1);
dataGridView1.Columns.Add(combo2);
首先添加一行,转换列,配置它们并将它们添加到行中。在设计师中不需要预先指定任何列。