tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルリストビューから1つ選択したときのIndex値を取得するには?
記事No218
投稿日: 2003/06/11(Wed) 11:20
投稿者masat21
masat21です。
現在、リストビューから項目(Item)を選択し、その項目をRemoveAt()で削除する
処理について検討しています。
RemoveAt()の引数に、選択したリストのIndexを渡すものであると想像できますが、
引数にすべきIndexの値を取得する方法がわかりません。

上記Indexの値を取得する方法についてご教示願います。

[ツリー表示へ]
タイトルRe: リストビューから1つ選択したときのIndex値を取得するには?
記事No220
投稿日: 2003/06/11(Wed) 23:38
投稿者NAO★
ListView1.SelectedIndices コレクションを調べてみてください。

たとえば、ひとつだけの選択であるなら、(MultiSelect プロパティが false)
        Dim i As Integer
        i = ListView1.SelectedIndices(0)

[ツリー表示へ]
タイトル[解決]Re^2: リストビューから1つ選択したときのIndex値を取得するには?
記事No229
投稿日: 2003/06/13(Fri) 16:05
投稿者masat21
こんにちは、masat21です。
下記のようにして確認してみた結果、思い通りの処理になっていました。
ありがとうございます。

> ListView1.SelectedIndices コレクションを調べてみてください。
>
> たとえば、ひとつだけの選択であるなら、(MultiSelect プロパティが false)
>         Dim i As Integer
>         i = ListView1.SelectedIndices(0)

[ツリー表示へ]
タイトルSelectedIndicesプロパティの引数について
記事No230
投稿日: 2003/06/13(Fri) 17:41
投稿者しんじ
いつもお世話になっております。

環境はVS.NET2002 WIN2000 です。
便乗質問になり大変申し訳御座いません。
私もこのスレッドに興味があり、2日間調べていたのですが解決できませんでした。
HELPを見る限りIndexOf メソッドを使用するものかと、、、、

下記のコードをダブルクリックイベントに貼り付けて実行してみたのですがきちんと動きます。
SelectedIndicesプロパティで取得できるんだろうなとは思っていたのですが、引数が0なのに
何故1のインデックスや2のインデックスを取得できるのか調べているのですが分かりません。
(変数に入れたときと同じ動作をしています。)
ちなみに引数を変更するとエラーが発生します。Countプロパティ以上になるので当たり前ですが、、、

もしよろしければ引数0の意味が分かる方教えていただけないでしょうか。
宜しくお願い申し上げます。

> > ListView1.SelectedIndices コレクションを調べてみてください。
> >
> > たとえば、ひとつだけの選択であるなら、(MultiSelect プロパティが false)
> >         Dim i As Integer
> >         i = ListView1.SelectedIndices(0)

[ツリー表示へ]
タイトルRe: SelectedIndicesプロパティの引数について
記事No233
投稿日: 2003/06/13(Fri) 21:23
投稿者NAO★
> 引数が0なのに何故1のインデックスや2のインデックスを取得できるのか調べているのですが分かりま
せん。

え〜とですね。
まず、用語の統一から。
「引数が0」と書かれていますが、これは関数やメソッドではないので引数ではないです。
SelectedIndices プロパティというのは 「選択されたインデックス」が保存されている
コレクション(配列)を返すものです。
配列の(0)とかもインデックスと言いますが、まぎらわしいので
ここでは日本語で「添字」と呼びます。

配列なので、選択されているのが「1個」だけなら、
(配列は0から始まるので)かならず「0番目」の添字に選択されたインデックスが
入ってくるということです。

MultiSelect プロパティが True になっている場合(複数の行が選択できる場合)は

配列の添字      選択されたインデックス
(0)         <-       5
(1)         <-       7
(2)         <-       9

(例として 5番目 7番目 9番目の行が選択されているとき)
のように配列に選択されたインデックスが格納されるということです。

こんな感じですがご理解いただけたでしょうか?

[ツリー表示へ]
タイトル[理解できました]Re^2: SelectedIndicesプロパティの引数について
記事No234
投稿日: 2003/06/13(Fri) 23:32
投稿者しんじ
NAOさん

現在自宅のPCよりアクセスしておりますのでIP違いますが申し訳ありません。
あまり時間が経つと失礼ですので取り急ぎお礼申し上げます。
丁寧に解説頂きまして誠にありがとうございます。

>>SelectedIndices プロパティというのは 「選択されたインデックス」が保存されている
コレクション(配列)を返すものです。

なるほどです。
コレクションを扱うプロパティやメソッドと考えれば納得できます。
凄く分かりやすい説明で理解できました。

表記「引数」に関しては誤っておりました。大変失礼いたしました。
プロパティの添字の型がInterger型でしたので直感的にVB6と同等にINDEXだと思って
訳が分からなくなったようです。 →SelectedIndices(添字 AS Interger)
根本的に考え方を変えないと理解できないですね、、、、汗

配列の概念は0からですので確かに0です。

>>MultiSelect プロパティが True になっている場合(複数の行が選択できる場合)

この場合は先にCOUNTプロパティを調べて、リストの数だけ配列を用意すれば
全てSELECTされているのを取得できそうですね^_^
自宅のPCは.NETがインストールされていないので明日実験してみます。

.NET購入したはいいですけどハードル高いなぁ!!
って思っておりましたが、ひとつひとつ理解すればかなり凄そうですね。
(まだまだ勉強中ですが、、、)
今後も精進いたします。

本当に勉強になりました。
ありがとうございました。

[ツリー表示へ]