
お世話になります。
仮想リストビューで画像一覧を表示しているのですが、アイテムの選択状態を上手く取得できず困っています。
通常はItems.SelectedImtesで取れるのですが、仮想リストビューだと例外になってしまいます。
そこでOnItemSelectionChangedで取得しようとしたのですが、何故か選択解除のタイミングでイベントが発生しません。仮想リストビューだからなのでしょうか。
とりあえず今はOnDrawItemで取得して変数に保存していますが、今度はスクロールで隠れた画像の選択解除が取得できません。
ですのでOnItemSelectionChangedでShiftキーとCtrlキーの有無を見て、押されていなければ一度全てのアイテムが選択解除されたものとし、その後Invalidate()とUpdate()でOnDrawItemを呼び出しています。
OnDrawItemで現在表示中の場所(クリックしたアイテム。この時は1つだけのはず)の選択状態が取れるので、とりあえずこれで目的の動作は果たしました。
ですがやり方がスマートでない上に、アイテムをクリックする度に画面を更新しているので見た目が悪いです。
何か良い方法は無いでしょうか?
No.1ベストアンサー
- 回答日時:
仮想モードの場合
ListViewItemCollectionとSelectedIndexCollection型の変数を用意してこれを使ってアクセスするように思います
ListView.ListViewItemCollection myCol;
ListView.SelectedIndexCollection mySel;
Form_Loadなどのイベントで
myCol = new ListView.ListViewItemCollection( listView1 );
mySel = new ListView.SelectedIndexCollection( listView1 );
などと紐付けします
OnItemSelectionChangeで
if (mySel.Count > 0 ) {
ListViewItem oItem = myCol[ mySel[0] ];
}
などといった具合にアクセスすればいいようです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
- 1 C#でCSVファイルをリストビュー(listView)で表示
- 2 C# リストビューの特定のセルの特定文字色を変更
- 3 C# リストビューの値を取得
- 4 [C#]Visual C# .NETで、コンソールアプリを埋め込んで実行し、それのログを表示させる
- 5 C#とc++の違いは何がありますか? また、似た部分は何がありますか? C#を勉強した後のc++は別
- 6 仮想リストビューのソートについて
- 7 ダイアログボックスにリストビューを付けたが、リストが表示されない
- 8 リストに表示される名前(.Net 4 C#)
- 9 C#でbyte配列から画像を表示させたい
- 10 C# Excelのsheetに表示された画像を削除したい。
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
COMポート 名前を取得する方法
-
5
UWSCでhtmlソースの文字列を取...
-
6
JavaScriptでWindowsログオンID...
-
7
モニタの物理解像度を得る(Win3...
-
8
バージョンナンバーの取得
-
9
時間を分に変換するプログラム
-
10
データの元はどこにあるのでし...
-
11
データ数をカウントしたいのですが
-
12
エクセルVBAで別ファイルのデー...
-
13
複数のBOOKの最終行の任意の列...
-
14
デスクトップフォルダのパスを得る
-
15
Excelで勤怠管理をしたいです。...
-
16
条件分岐
-
17
EXCELのリストボックスを選択し...
-
18
ホームページアイコンの取得
-
19
リモートコンピュータのPC名を...
-
20
ExcelでNTPサーバーから時刻を...
おすすめ情報