我正在尝试从列表框元素中填充组合框。
这是代码:
foreach(string elements in (Application.OpenForms[1] as Impostazioni).listBox1)
{
cbxValuta.Items.Add(elements);
}
但我从Visual Studio 2012中收到此错误:
错误1 foreach语句无法对类型变量进行操作 'System.Windows.Forms.ListBox'因为'System.Windows.Forms.ListBox' 不包含'GetEnumerator'
的公共定义
我不知道如何解决这个错误。
答案 0 :(得分:5)
如果要迭代ListBox元素,则必须使用Items属性。
试试这个:
foreach(string elements in (Application.OpenForms[1] as Impostazioni).listBox1.Items)
{
cbxValuta.Items.Add(elements);
}
错误:
但是现在我收到了这个错误:索引超出了范围。必须是非负面的 并且小于集合的大小。参数名称:index
首先,您必须检查Application.OpenForms是否为空且不为空。
因此,在foreach之前,您必须添加以下代码行:
如果Application.OpenForms是列表:
if(Application.OpenForms != null && Application.OpenForms.Count != 0)
如果Application.OpenForms是数组:
if(Application.OpenForms != null && Application.OpenForms.Length != 0)
答案 1 :(得分:1)
检查listBox1
是否具有可以枚举的.Items
属性。
答案 2 :(得分:0)
如果您想在代码中使用foreach
,那么您的类应该实现IEnumerable
或IEnumerable<T>
接口。
尝试使用.Items
属性。等;
(Application.OpenForms[1] as Impostazioni).listBox1.Items
答案 3 :(得分:0)
您需要从listbox1获取“Items”集合,而不是使用整个列表框。
foreach(string elements in (Application.OpenForms[1] as Impostazioni).listBox1.Items)
{
cbxValuta.Items.Add(elements);
}