- PR -

ListBox内の全てのコレクションを取得したい

1
投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-12-25 10:08
お世話になります。現在VisualStudio2005+C#を使っているのですが、リストボックス内のコレクションの取得で引っかかり、ご助言をいただきたく質問させていただきます。

検索すると「選択されている全ての項目」を取得する手段はいくらかあったのですが、「選択されていないもの」も含めて、全てのコレクションを取得する方法はないでしょうか?
あるいは、選択されている項目かどうかを問わず、n番目の項目を取得する方法などでも構いません。

「Listプロパティを使え」という話は見つけたのですが、ヘルプを見てみてもあまり関係ありそうな話ではなく、万策尽きた状態です。

よろしければ、ご回答お願いいたします。

_________________
◇◇◇ 社内SEを兼務する文系プログラマです。
◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。
◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ

[ メッセージ編集済み 編集者: Wingard 編集日時 2007-12-25 10:30 ]
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-25 10:35
引用:

Wingardさんの書き込み (2007-12-25 10:08) より:

検索すると「選択されている全ての項目」を取得する手段はいくらかあったのですが、「選択されていないもの」も含めて、全てのコレクションを取得する方法はないでしょうか?

「Listプロパティを使え」という漠然とした回答は見つけたのですが、ヘルプを見てみてもあまり関係ありそうな話ではなく、万策尽きた状態です。


ヒント:ListBox.Items プロパティ (microsoft.com)

なんでもかんでもすぐ検索する前に、MSDN を隅から隅までずずずいっと眺めてみる
癖をつけると良いと思いますよ。
全部とは言わないけど、たとえば今回だったら ListBox クラスのところは全部逐一
見てみれば、すぐわかったんじゃないかな。

それに「選択されている全ての項目」を取得する手段が見つかったのだから、たぶん
SelectedItems プロパティのことだと思うのだけど、そこから Items に目がいくように
普段から関連付けて考えられるようにしておくといいと思います。
「選択されている」が「Selected」なわけで、じゃあ「項目」は「Items」?みたいに。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-12-25 10:41
ご回答ありがとうございます。

すみません、大切なことを言い忘れておりました。
「Selected」を使わないで、全ての項目を取得したいのです。というのも、今現在、SelectedIndexを使って取得することはできているのですが、「SelectedIndexChange」にイベントを仕込んでいるため、そうするとSelectedIndexで項目を変更するたびにそのイベントが実行されてしまいます。

最初はそのイベントが実行されても大丈夫なやりかたを取ろうとしたのですが、それがうまくいかなかったので、もしリストボックスの全ての項目を簡単に取得できるのであれば、そっちで実装しようかと考えていました。

言葉が足らず、申し訳ありません。

[ メッセージ編集済み 編集者: Wingard 編集日時 2007-12-25 10:41 ]
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-12-25 11:12
引用:

Wingardさんの書き込み (2007-12-25 10:08 より:
検索すると「選択されている全ての項目」を取得する手段はいくらかあったのですが、「選択されていないもの」も含めて、全てのコレクションを取得する方法はないでしょうか?
あるいは、選択されている項目かどうかを問わず、n番目の項目を取得する方法などでも構いません。



これに対してはぽぴ王子さんが返答されているようにListBoxのItemsプロパティが該当します。
この質問文からはそれ以外の答えは思いつきません。

ぽぴ王子さんのご回答内容は期待される回答ではなかったということでしょうか?

引用:

Wingardさんの書き込み (2007-12-25 10:41) より:



にて補足されているのですが、どんな回答を期待されているのかよくわかりません。
どのイベントで処理するべきかを悩まれているのでしょうか?
どのイベントで処理すべきか?という質問なのであれば、
・どんなことをしたくて(開発内容やその背景)
・今現在どんな風に作りこんでいて(実装の内容)
・どんな状況になっているのか?(今起きている期待しない状況)
を他人が読んでわかるように説明する必要があると思います。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-25 13:26
引用:

Wingardさんの書き込み (2007-12-25 10:41) より:

すみません、大切なことを言い忘れておりました。
「Selected」を使わないで、全ての項目を取得したいのです。


うーむ、私の書き方がマズかったでしょうかね。
よねKENさんも書かれていますが、ListBox.Items プロパティで取れるはずです。

引用:

ぽぴ王子さんの書き込み (2007-12-25 10:35) より:

それに「選択されている全ての項目」を取得する手段が見つかったのだから、たぶん
SelectedItems プロパティのことだと思うのだけど、そこから Items に目がいくように
普段から関連付けて考えられるようにしておくといいと思います。
「選択されている」が「Selected」なわけで、じゃあ「項目」は「Items」?みたいに。


このあたりを勘違いされたのかもしれませんが。
「選択されている全ての項目」というのが「SelectedItems」プロパティを指している
のだろうと思ったわけです。なにもそれで取れ、とは書いていないのです。
SelectedItems プロパティまでこぎ着けたのであれば、そこから Items プロパティが
連想できないかな?もうちょっといろんなところに目を向けることも必要なんじゃない
かな?というつもりで書きました。


引用:

というのも、今現在、SelectedIndexを使って取得することはできているのですが、「SelectedIndexChange」にイベントを仕込んでいるため、そうするとSelectedIndexで項目を変更するたびにそのイベントが実行されてしまいます。


質問に関しては、私もよねKENさんと同じく、どのような回答を期待されているのか
わかりませんでした。
これ以上の回答を期待するのであれば、スイス銀行の私の口座に500ドル振り込んで…
じゃなかった、よねKENさんが書かれているような「他人が読んで理解できる」状況
説明が必要だと思います。


以下蛇足。
個人的には投稿内容を編集されるのはかまいませんが、どこを編集したかを一言
添えていただきたいなと思います。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-12-25 14:05
ご回答ありがとうございます。申し訳ありません、ちょっと時間がなくてどたばたしていて、流し読みして返答していました。

やりたいことは、選択中の項目かどうかに関係なく、n番目に入っている項目を取得するとか、あるいは配列などに一括してリスト内の項目を全て入れ込んでしまうとか、そういった使い方ができないか探しています。

ListBox.Itemsプロパティについても、ListBox.Items.Countなどは使っていますし、一通りのこともやってみたつもりだったのですが、改めてヘルプなどを見直してみてもやはり取得方法がわかりません。具体的にどうすれば取得できるのでしょうか?


[ここから編集]
編集については、以後気をつけます。。。

[ メッセージ編集済み 編集者: Wingard 編集日時 2007-12-25 14:06 ]
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-25 14:22
引用:

Wingardさんの書き込み (2007-12-25 14:05) より:

流し読みして返答していました。


………………。
いえ、なんでもないです。


引用:

やりたいことは、選択中の項目かどうかに関係なく、n番目に入っている項目を取得するとか、あるいは配列などに一括してリスト内の項目を全て入れ込んでしまうとか、そういった使い方ができないか探しています。

ListBox.Itemsプロパティについても、ListBox.Items.Countなどは使っていますし、一通りのこともやってみたつもりだったのですが、改めてヘルプなどを見直してみてもやはり取得方法がわかりません。具体的にどうすれば取得できるのでしょうか?


ListBox.Items プロパティ (microsoft.com)
の説明に

引用:

プロパティ値
ListBox 内の項目を表す ListBox.ObjectCollection


という説明があると思いますが、そこからまずは ListBox.ObjectCollection クラスを見てみます。
ListBox.ObjectCollection クラスはコレクションの一種ですから、他のコレクションと同じような
使い方ができるはずです。実際のところは「他のコレクション」がどんなものか知らないと意外と
正解にはたどり着けないのかもしれませんが。
改めてヘルプなどを見直してみると、サンプルの中にこんな記述が見つかります。

コード:

    // Get the string contained in each item.
    string itemString = (string) theListBox.Items[e.Index];


ここまで見ればわかると思います。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2007-12-25 14:45
懇切丁寧にありがとうございます。

ObjectCollectionクラスも見ていましたが、
 theListBox.Items[e.Index];
の「e.」の意味も分からず、全く頭に入ってませんでした。

そこに数値を入れたら取得できましたので、
何とか先に進めそうです。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)