ListBox1.SelectedIndicesプロパティについて への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 デフォルト  (社会人) 投稿日時 2009/3/10 19:17:20
>> 仮面の弁士さん
>…むぅ。

全く気づきませんでした。魔界の仮面弁士さんでしたね。大変失礼いたしました。m(_ _)m


>せめて答えてくれた人の名前は間違わないようにしましょう
ヴァンさん、ありがとうございます。今後気をつけたいと思います。
投稿者 ヴァン  (社会人) 投稿日時 2009/3/10 19:13:05
こんにちは。

>ちなみに日本語ももう少し勉強したいと思います。

せめて答えてくれた人の名前は間違わないようにしましょう。
投稿者 デフォルト  (社会人) 投稿日時 2009/3/10 19:06:24
仮面の弁士さん、ありがとうございました。
また、ご指導よろしくお願いします


ちなみに日本語ももう少し勉強したいと思います。
(きちんとした日本語が書けるように)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/3/10 18:16:30
> 仮面の弁士さん
…むぅ。

> このような理解の仕方でよろしいのでしょうか?
OK です。
投稿者 デフォルト  (社会人) 投稿日時 2009/3/10 06:36:27
仮面の弁士さん、ありがとうございます。
このような理解の仕方でよろしいのでしょうか?

>ここで、0,1,3 が選択状態になったとしましょう。

この場合は、ループが0TO2で3回実行される
1回実行されるごとにアイテムがひとつずつ削除されるので、そのたびにインデックスが、変化する。

currentindex = ListBox1.SelectedIndices(0)
これは先頭のアイテムを削除するということなのですね


>もし、1,4 が選択状態であれば、
 この場合は、2回実行される。
 1回目に先頭のアイテムが削除され、2回目に2つめのアイテムのインデックスが、1→0に変化して
  そのアイテムを削除する
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/3/10 05:47:13
> ListBox1.SelectedIndicesプロパティは、

Indices が Index の複数形を現す英単語である事はご存知でしょうか?


> currentindex = ListBox1.SelectedIndices(0)の(0)は、インデックスなのでしょうか?

たとえば、ListBox に、5 つの項目が用意してあるとします。
 0: あああああ
 1: いいいいい
 2: ううううう
 3: えええええ
 4: おおおおお
また、複数選択できるよう、SelecionMode プロパティも変更してある物とします。


ここで、0,1,3 が選択状態になったとしましょう。

この場合、3個選択されているのですから、.SelectedIndices.Count は「3」を返します。そして、
 .SelectedIndices(0) は、最初の選択項目「0」
 .SelectedIndices(1) は、2つ目の選択項目「1」
 .SelectedIndices(2) は、3つ目の選択項目「3」
を返す事になるわけです。ちなみに、.SelectedIndex は最初の選択項目を表すので「0」を返します。


もし、1,4 が選択状態であれば、
 .SelectedIndices.Count は「2」
 .SelectedIndices(0) は「1」
 .SelectedIndices(1) は「4」
 .SelectedIndex は「1」
となります。このような説明で分かりますでしょうか?
投稿者 デフォルト  (社会人) 投稿日時 2009/3/10 04:49:24
すみません。意味不明な文章で理解できないと思います。
端的に言うと下記のコード何となくわかるのですが
 
ListBox1.SelectedIndices(0)の(0)の部分がいまいち理解できかねています。

 For i As Integer = 0 To ListBox1.SelectedIndices.Count - 1
            currentindex = ListBox1.SelectedIndices(0)
投稿者 デフォルト  (社会人) 投稿日時 2009/3/10 04:24:31
ListBox1.SelectedIndicesプロパティは、MSDNで調べると
「ListBox 内で現在選択されているすべての項目の 0 から始まるインデックス番号を格納するコレクショ ンを取得します」

下記は、アイテムを移動させるプログラムですが、コードの中にある

currentindex = ListBox1.SelectedIndices(0)の(0)は、インデックスなのでしょうか?

それともListBox1.SelectedIndices(0)というように表記するべきものと決まっているのでしょうか?


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim currentindex As Integer
        For i As Integer = 0 To ListBox1.SelectedIndices.Count - 1
            currentindex = ListBox1.SelectedIndices(0)


            ListBox2.Items.Add(ListBox1.Items(currentindex))
            ListBox1.Items.RemoveAt(currentindex)

        Next
    End Sub
  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim currentindex As Integer


        For i As Integer = 0 To ListBox2.SelectedIndices.Count - 1
            currentindex = ListBox2.SelectedIndices(0)
            ListBox1.Items.Add(ListBox2.Items(currentindex))
            ListBox2.Items.RemoveAt(currentindex)
        Next

    End Sub