DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リストビューでのアイテム取得

環境/言語:[C#]
分類:[.NET]

 リストビューにアイテムを追加したことに反応して、
そのリストビューのアイテム(サブアイテム)を新たに取得して
ダウンロードをしていくという「iria」のようなソフトを作ろうとしていますが、
リストビューから、マウスを使わないで上からアイテム(サブアイテム)を取得するにはどうしたらよいのでしょうか?
かなりの初心者なので初歩的な質問なのですが、とても困っています。
だれか教えてくださいよろしくお願いします。
>  リストビューにアイテムを追加したことに反応して、
というのを、どのような意図で仰られているのか量りかねるのですが‥‥
#アイテムの追加はご自身で行うのではないのでしょうか?

 リストビューのアイテム ( ListViewItem ) は ListView.Items プロパティから
サブアイテム ( ListViewItem.ListViewSubItem ) は ListViewItem.SubItems プロパティから取得できます。
レスありがとう御座います

> >  リストビューのアイテム ( ListViewItem ) は ListView.Items プロパティから

ここで(仮に)リスト1と名前をつけたリストビューのアイテムを取得し表示するには、
MessageBox.show(リスト1.Items.tostring());
でやっているのですが、これだとできません。
何かメモリの割り当てみたいなものが必要なのでしょうか?それともやり方が違っているんでしょうか?
↓も同じで望んでいる文字列が取得できません、いったいどうしたらよいのでしょうか?
誰か教えてくださいよろしくお願いします。
 
> サブアイテム ( ListViewItem.ListViewSubItem ) は ListViewItem.SubItems プロパティから取得できます。
■No7163に返信(tomaさんの記事)
> レスありがとう御座います
>
>>>  リストビューのアイテム ( ListViewItem ) は ListView.Items プロパティから
>
> ここで(仮に)リスト1と名前をつけたリストビューのアイテムを取得し表示するには、
> MessageBox.show(リスト1.Items.tostring());
> でやっているのですが、これだとできません。
> 何かメモリの割り当てみたいなものが必要なのでしょうか?それともやり方が違っているんでしょうか?
> ↓も同じで望んでいる文字列が取得できません、いったいどうしたらよいのでしょうか?
> 誰か教えてくださいよろしくお願いします。
>  
>>サブアイテム ( ListViewItem.ListViewSubItem ) は ListViewItem.SubItems プロパティから取得できます。

tomaさん こんにちは 平ちゃんです。
tomaさんの質問を何度も読み返したのですが質問の意味が理解できません。
■7132の質問の殆ど意味不明
■7163も意味不明
もしまだ解決してないなら質問の内容を誰でもわかるよう書き直す必要があるかもしれません。
私も質問が意味不明なので回答ができません。

#説明端折り過ぎたのかなぁ(^_^;)
#ヘルプはご覧になられてますでしょうか?
#慣れない内は見辛いかと思いますが、目を通すようにしましょうね。

> ここで(仮に)リスト1と名前をつけたリストビューのアイテムを取得し表示するには、
> MessageBox.show(リスト1.Items.tostring());
> でやっているのですが、これだとできません。

 ListView.Items プロパティ から直接取得できるのは ListView.ListViewItemCollection になります。
 ListView.ListViewItemCollection のインデクサから ListViewItem が取得できます。

例)一番目のアイテムを取得する(アイテムが一つもないと例外が発生します)

    ListView.ListViewItemCollection lvic = リスト1.Items;
    ListViewItem lvi = lvic[0];
    MessageBox.Show(lvi.Text);

 これは纏めて次のように記述することもできます。

    MessageBox.Show(リスト1.Items[0].Text);


 リスト全体を取得するときは foreach または for によるループ処理をするのが一般的でしょうか。

例) foreach ループを用いた場合

    foreach (ListViewItem lvi in リスト1.Items)
         MessageBox.Show(lvi.Text);

例) for ループを用いた場合

    for (int i = 0; i < リスト1.Items.Count; i++)
        MessageBox.Show(リスト1.Items[i].Text);


 サブアイテムの取得方法も似たような記述になります。
わかりづらい言い方で申し訳ないです。
深山さんや答えてくれた皆さんありがとう御座います。
なんとか解決できました。
リストの何行目を取得ということだったので、
listView1.Items[0].subItems[0].text
(少々まどろっこしいですが・・・)
このような形で取得することができました。
お忙しい中お答えくださって本当にありがとう御座います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板