タイトル | : ListBox MultiExtended 選択行のIndex |
記事No | : 10776 |
投稿日 | : 2012/04/09(Mon) 18:32 |
投稿者 | : じょば |
OS : Windwos XP , Windows 7 言語:Visual Basic 2010 Express
ListBox にて、選択されている行のIndexを取得する方法について、 御質問があります。
ListBox は、 SelectionMode = MultiExtended を指定しています。
処理本体は、ListBoxでクリックされた行に設定しているJPEGファイル名 を取得して、対応する画像をPictureBoxに表示するという処理です。
一つずつクリックして表示する場合は、想定した動作を実現しています。
想定外の部分についてご説明します。 元々VB6で作成していたのですが、複数選択のListBoxでも、VB6では、 SelectedIndexで、フォーカスのあるIndex値を返してくれていましたが、 .NETでは、任意のIndexを返すようで、具体的にはSelectedIndexies(0)の Indexを返すようです。
従いまして、VB6で作成していたプログラムでは、複数行選択して表示 される画像は、最後に選択された画像が表示されていましたが、.NETでは SelectedIndexies(0)の画像が表示されるだけです。
≪現在の対処≫
ListBoxで選択された最後の行を調べて、似たような機能を実現できる ように自作コードを書いています。
≪現在の問題点≫
キーボードで、Shift + 下矢印キー を使って複数行を選択する場合、 最後の行まで選択した時点で、SelectedIndexChanged イベントが発生 するのは当然ですが、最後の行まで選択されている状態で、もう一度 Shift + 下矢印キー を押すと、選択状態は変わらないのに、 SelectedIndexChanged イベントが発生してしまうので、自作コードが 想定どおりに動かない場合があります。
イベント発生は納得できないのですが、仕様であれば仕方がありません。
≪御質問内容≫
ListBox に SelectionMode = MultiExtended をしている場合、複数選択 した状態で、フォーカスのある行のIndexを取得する方法はありません でしょうか?
色々調べてはみたのですが、現時点で見つけられていません。
これがあれば1行で済むのですが、不可能なら自作コードを改造します。
|