我目前正试图以一个组合框添加到一个DataGridView一个DGV一行。C#添加了的DataGridViewComboBoxCell
在DGV,有5列:复选框,字符串,字符串,组合框,组合框。
两者组合框柱被配置为datagridviewcomboboxcolumns(经由VisualStudio的设计者)。我的问题是添加行。
我现在的尝试是:列已被定义,我通过dataGridView.Rows.Add添加行。 为此,我使用了一个对象数组。例如:
dataGridViewRow row = new dataGridViewRow();
object[] obj = new object[5] {true, "str1", "str2", null, null};
dataGridView1.Rows.Add(obj);
这通过没有任何错误。但从逻辑上来说,comboBoxes没有任何东西。
我试过一个数据源设置为4和行的第五单元:
错误...使用ROW.dataGridViewComboBoxCell.Items.Add:项目不显示...
填充的obj [ 3]和4用新DGVcomboBoxCell或-Column:
Error... :The error message says "The dataGridViewComboBoxCell-Value is invalid.
进一步的信息:每列应在组合框相同的项目。 (这些以前通过互联网加载,如xml)。将dataSource设置为两列会破坏整个DGV(我认为是因为其他colmns没有数据源)。 简而言之:如何将行添加到包含装满项目的组合框的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);
首先添加行,投栏,配置它们并将它们添加到该行。 设计器中不需要预先指定列。
感谢您的帮助,我想出了如何做到这一点更简单: 我刚刚弄错了dataGridView.Columns.Add方法,我想每次添加一行时,新的列被添加到整个DGB也使用Columns.Add方法,所以我使用了Cells.Add。 (出了什么问题) 在添加行后添加列(到一行)是诀窍。 BTW对不起我的英文不好:P – NoMad
我在Linqpad测试你的第一个解决方案,它工作的很好。但是当我在Visual Studio的表单设计器中使用它时,它不会正确显示ComboxCell。这很奇怪。 – zionpi