1

リストボックス要素からコンボボックスにデータを入力しようとしています。

これはコードです:

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

しかし、私はVisual Studio2012からこのエラーを受け取ります:

エラー1foreachステートメントは、「System.Windows.Forms.ListBox」に「GetEnumerator」のパブリック定義が含まれていないため、「System.Windows.Forms.ListBox」タイプの変数を操作できません。

このエラーを解決する方法がわかりません。

4

4 に答える 4

5

ListBox 要素を反復処理する場合は、Itemsプロパティを使用する必要があります。

これを試して:

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

エラー:

しかし、今では次のエラーが表示されます: インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

まず、Application.OpenForms が null ではなく、空でないかどうかを確認する必要があります。

したがって、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 に答える