导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

再次求助:DataGridViewComboBoxCell 值无效。

leon51 2019-10-25 10:16:59
重新发个贴,问题找到了,但不知道如何解决,请帮帮忙,谢谢

在下面的AddColumn方法中,通过Array类型的变量给DataGridViewComboBoxColumn添加Items;
ComboBoxColumn列的实际取值为“A”,“B”,“C”.

private void AddColumn(DataGridView dgv, DataGridViewComboBoxColumn comboBoxColumn, 
string columnName, Array items, string dataPropertyName)
{
comboBoxColumn = new DataGridViewComboBoxColumn();
comboBoxColumn.Name = columnName;
comboBoxColumn.DataPropertyName = dataPropertyName;
//...
foreach (string itm in items)
{
comboBoxColumn.Items.Add(itm);
}
dgv.Columns.Add(comboBoxColumn);
}


用下面的代码调用后会出现这样的错误提示:System.ArgumentException: DataGridViewComboBoxCell 值无效。
Array items = new string[] { "A", "B","C" };
dgv.AddColumn(dgv, comboBoxColumn, "类别", items, "Category");


当用以下代码时则一切正常。GetEnum是别人的提供的一个方法,返回的是Array类型。
Array items = GetEnum("Category");
dgv.AddColumn(dgv, comboBoxColumn, "类别", items, "Category");


因此可以确定是
Array items = new string[] { "A", "B","C" };

出了问题。但是应该如何修改呢?
我按下面这样写也不对。
Array items = Array.CreateInstance(typeof(string),3);
items.SetValue("A", 0);
items.SetValue("B", 1);
items.SetValue("C", 2);
...全文
19 点赞 收藏 1
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Array 是抽象类,不能使用 new 创建。
Array items = new string[] { "A", "B","C" };
-->
string[] myList= new string[] { "A", "B","C"};
Array items = Array.CreateInstance(typeof(string), myList);
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.