ページ 11

VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月30日(水) 22:43
by .net初心者
ディレクトリの取得
何度もお尋ねしてすみません。
foreachを使ってcheckedListBoxで選択されているアイテム名を全て取得したいです。
とりあえず配列に入れテキストボックスに表示しようと頑張ってみました。
しかしいくらやってもforeachでエラーが返ってきてしまいます。

どの様にすれば取得できるでしょうか?

this->checkedListBoxItem->

Re:VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月30日(水) 23:50
by バグ
CheckedItemsプロパティの中身を取り出していけばOKです。
この際、ListBox内のアイテムに関してはObject型になってますので、登録した際と同じ型にキャストして使用しなければなりません。

下記のサンプルでは、String型のアイテムが格納されてあるCheckedListBox内の選択されているアイテムをメッセージボックスで順次表示していっています。
for each (System::Object^ obj in this->checkedListBox->CheckedItems)
{
    System::Windows::Forms::MessageBox::Show(((System::String^)obj));
}

Re:VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月31日(木) 00:16
by バグ
ちなみにforeachを使用せずに、forで記述すると下記のような感じです。
for (int i = 0; i < checkedListBox1->CheckedItems->Count; ++i)
{
    MessageBox::Show((String^)(checkedListBox1->CheckedItems));
}

Re:VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月31日(木) 01:03
by .net初心者
ご回答ありがとうございます。
別のやり方も教えて頂きありがとうございました。

foreachはあまりつかったことがないので(PHPで使った程度)
取っ付きにくいですが頑張ります。

Re:VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月31日(木) 08:45
by バグ
foreachの使用法、もちろん、知っておいて損はありませんが…。

もし、forループの方が分かりやすかったり、馴染み深いのであれば無理に拘って使う必要はないかと思います。

実際、foreachでなければいけないという局面はほとんど無く、大抵の場合はforループで同等の処理を行えますしね。

ArrayクラスならLengthプロパティ、ListクラスならCountプロパティで要素数を取得できますから、インデックスの作成も容易ですしね。

Re:VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月31日(木) 15:36
by .net初心者
ご回答ありがとうございました。
for文を使わせていただきます。
助かりました。

Re:VC++.netでcheckedListBoxで選択されている項目を取得する。

Posted: 2009年12月31日(木) 15:36
by .net初心者
ご回答ありがとうございました。
for文を使わせていただきます。
助かりました。