
お世話になります。
仮想リストビューで画像一覧を表示しているのですが、アイテムの選択状態を上手く取得できず困っています。
通常は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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELピボットテーブル(複数アイテム) 1 2023/04/27 12:15
- HTML・CSS HTMLのフォームについてお尋ねします 1 2022/12/03 21:47
- Google Drive Googleドライブに詳しい方に質問です 3 2022/06/19 21:58
- 確定申告 確定申告をe-Tax(スマホ)で行う時の入力方法について 1 2023/02/12 15:38
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Windows 10 Windows11タスクバーやエクスプローラー、スタートメニュー 動画全画面時にカーソルが見えない 1 2022/04/08 00:03
- Windows 10 Windows10パソコン右クリックメニューで「切り取り」と「コピー」を選択し間違わないようにしたい 3 2022/04/16 10:35
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
VBA Shapesの座標からセル位置...
-
count(*)で取得した値をJAVAの...
-
VBA:小数点以下の数字を取得で...
-
EXCELのリストボックスを選択し...
-
Flexgridで選択行の列の値を取...
-
like演算子内に変数って使えな...
-
ListView 項目の選択/選択解除...
-
データ数をカウントしたいのですが
-
利用者側のMACアドレスを取得し...
-
VBScriptで数値にコンマを付け...
-
VBAでActiveDirectoryのユーザ...
-
現在時刻をミリ秒まで取得
-
VBAでステータスバーの情報取得...
-
Spreadの選択行の取得について
-
リクエストからArrayListのデー...
-
時間を分に変換するプログラム
-
asp.netでtextboxの値を取得
-
SQL文(検索)で困っています
-
整数の桁数が取得できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
利用者側のMACアドレスを取得し...
-
count(*)で取得した値をJAVAの...
-
Flexgridで選択行の列の値を取...
-
Spreadの選択行の取得について
-
like演算子内に変数って使えな...
-
EXCELのリストボックスを選択し...
-
データ数をカウントしたいのですが
-
VBA Shapesの座標からセル位置...
-
NTPサーバから時刻を取得する
-
VBA リストボックス内の値を複...
-
エクセルVBAで複数選択できるよ...
-
JavaScriptにおいてコンピュー...
-
時間を分に変換するプログラム
-
JavaScriptでWindowsログオンID...
-
「Excel VBA」 Webクエリ マク...
-
javaで週の最初の日(例:月曜日...
おすすめ情報