foreachステートメントのリストボックス内の単一のアイテムを表すにはどうすればよいですか?
ListBoxItemを試しましたが、System.Windows.Controlsは.Net Framework(バージョン4)では有効な名前空間とは見なされません。
foreach(ListBoxItem item in listBoxObject.Items)
{
...
}
foreachステートメントのリストボックス内の単一のアイテムを表すにはどうすればよいですか?
ListBoxItemを試しましたが、System.Windows.Controlsは.Net Framework(バージョン4)では有効な名前空間とは見なされません。
foreach(ListBoxItem item in listBoxObject.Items)
{
...
}
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。
listBoxObject.Items
これは、コントロールではなくデータオブジェクトを含むオブジェクトコレクションであることがわかります。
たとえば、次のようにリストボックスをバインドすると、次のようになります。
listBox1.DataSource = new string[] { "asdf", "qwerty" };
次に、.Items
プロパティはObjectCollection
2つの文字列を含む結果を生成します。
通常、誰かがリストボックスアイテムをループしているとき、それらが選択されているかどうかを判断しようとしています。この場合は、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.
}