string[] chkItems = new string[4];
string[] str = new string[4];
str[0] = txtID.Text;
str[1] = txtName.Text;
str[2] = txtEmail.Text;
itemCount = ltbxInterests.SelectedItems.Count;
for (int i = 0; i <= itemCount; i++)
{
ltbxInterests.SelectedItems.CopyTo(chkItems, 0);
// here it is returning an exception
//"Object cannot be stored in an array of this type."
}
请帮我解决如何摆脱此异常
答案 0 :(得分:2)
这里有几个问题,chkItems被定义为长度4,所以如果你尝试放入4个以上的项目,你将得到一个异常。源数组SelectedItems属于object类型,所以你需要转换结果。
假设您只是将字符串放入可以使用的列表框中(记得引用System.Linq)
string[] str = new string[4];
str[0] = txtID.Text;
str[1] = txtName.Text;
str[2] = txtEmail.Text;
string[] chkItems = ltbxInterests.SelectedItems.OfType<string>().ToArray();
如果您想限制前4项,可以将最后一行替换为
string[] chkItems = ltbxInterests.SelectedItems.OfType<string>().Take(4).ToArray();
此外,您可以缩短代码以使用数组初始值设定项(但这将使str长度为3,因为您只有3个项目):
string[] str = new [] {
txtID.Text,
txtName.Text,
txtEmail.Text,
}
答案 1 :(得分:1)
SelectedItems
是Object的集合,然后,为了使用CopyTo
方法,chkItems
必须是对象类型的数组(即object[]
)。
否则,您可以使用LINQ转换为字符串列表:
var selectedList = ltbxInterests.SelectedItems.OfType<object>()
.Select(x => x.ToString()).ToList();
答案 2 :(得分:0)
您应该检查&gt;的类型chkItems。