3

foreachステートメントのリストボックス内の単一のアイテムを表すにはどうすればよいですか?

ListBoxItemを試しましたが、System.Windows.Controlsは.Net Framework(バージョン4)では有効な名前空間とは見なされません。

foreach(ListBoxItem item in listBoxObject.Items)
{
    ...
}
4

3 に答える 3

1

foreach(Object item in listBoxObject.Items){ ... }

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.item.aspx

ListBox.ItemsのタイプはSystem.Windows.Forms.ListBox.ObjectCollectionSystem.Windows.Forms.ListBox.ObjectCollection.Item のタイプはObjectです。HTH。

于 2010-08-26T13:14:12.147 に答える
1

listBoxObject.Itemsこれは、コントロールではなくデータオブジェクトを含むオブジェクトコレクションであることがわかります。

たとえば、次のようにリストボックスをバインドすると、次のようになります。

listBox1.DataSource = new string[] { "asdf", "qwerty" };

次に、.ItemsプロパティはObjectCollection2つの文字列を含む結果を生成します。

于 2010-08-26T13:17:40.023 に答える
1

通常、誰かがリストボックスアイテムをループしているとき、それらが選択されているかどうかを判断しようとしています。この場合は、listBoxObject.Itemsの代わりにlistBoxObject.SelectedItemsを使用してみてください。これにより、選択されたアイテムのみが返されます。

私の知る限り、ListBoxItemオブジェクトはありません。各アイテムのオブジェクトを使用する必要があります(これは、選択されたアイテムとアイテムが返すものです)。オブジェクトはアイテムの値を表すため、それに応じて使用します(つまり、オブジェクトが文字列の場合は文字列として使用しますが、オブジェクトが複雑なオブジェクトの場合はそのまま使用します)。

コードサンプル:

foreach (Object listBoxItem in listBoxObject.SelectedItems)
{
  //Use as object or cast to a more specific type of object.
}

また、常にどのオブジェクトになるかがわかっている場合は、foreachループでキャストできます。(警告:間違っている場合、これは例外をスローします)。この例は、文字列のみがリストボックスに入力されている場合です。

foreach (String listBoxItem in listBoxObject.SelectedItems)
{
  //Use as String. It has already been cast. 
}
于 2010-08-26T14:39:44.333 に答える