1

我正在尝试从列表框元素填充组合框。

这是代码:

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”的公共定义

我不知道如何解决这个错误。

4

4 回答 4

5

如果要遍历 ListBox 元素,则必须使用Items属性。

试试这个:

foreach(string elements in (Application.OpenForms[1] as Impostazioni).listBox1.Items)
{
    cbxValuta.Items.Add(elements);
}

错误:

但现在我得到这个错误:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引

首先,您必须检查 Application.OpenForms 是否不为空且不为空。

因此,在 foreach 之前,您必须添加以下代码行:

如果 Application.OpenForms 是列表:

if(Application.OpenForms != null && Application.OpenForms.Count != 0)

如果 Application.OpenForms 是数组:

if(Application.OpenForms != null && Application.OpenForms.Length != 0)
于 2013-01-17T19:47:55.630 回答
1

检查是否listBox1.Items可以枚举的属性。

于 2013-01-17T19:48:31.527 回答
0

如果你想foreach在你的代码中使用,你的类应该实现IEnumerableIEnumerable<T>接口。

.Items用属性试试。像;

(Application.OpenForms[1] as Impostazioni).listBox1.Items
于 2013-01-17T19:48:25.287 回答
0

您需要从 listbox1 获取“Items”集合,而不是使用整个列表框。

foreach(string elements in (Application.OpenForms[1] as Impostazioni).listBox1.Items)
    {
        cbxValuta.Items.Add(elements);
    }
于 2013-01-17T19:53:04.227 回答