- PR -

リストボックスで

1
投稿者投稿内容
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2006-06-26 21:46
VS2003 C#でリストボックスを使っています。

リストボックスにはデータソースにDataTableを設定していて、DataTableはデータベースのクエリによるデータです。

リストボックスのSelectModeはMultiExtendedなんですが、リストボックスを縦スクロールさせてCTRLキー+マウスクリックで選択解除を行うと、全て選択解除したはずなのに、先頭のレコードが選択状態になってしまいます。
SelectModeをMultiSimpleにしても同じでした。

マウスアップイベントハンドラやIndexChangedイベントハンドラで回避しようとしたんですが、イベントの起きる順序が IndexChanged → マウスアップ だったので回避できませんでした。

何か回避策はないでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-26 22:01
引用:

NEOさんの書き込み (2006-06-26 21:46) より:

リストボックスを縦スクロールさせてCTRLキー+マウスクリックで選択解除を行うと、全て選択解除したはずなのに、先頭のレコードが選択状態になってしまいます。


(多分) 仕様です。

これを防ぐためには、バインドすることをやめるか、
必ず、1 つ選択するように制御する必要があります。

引用:

マウスアップイベントハンドラやIndexChangedイベントハンドラで回避しようとしたんですが、イベントの起きる順序が IndexChanged → マウスアップ だったので回避できませんでした。


後者の方法 (必ず 1 つ選択するようにする) で回避するのであれば、
SelectedIndexChanged イベントで選択が解除されたら、
BindingContext から CurrencyManager の Position を SelectedIndex に設定するように制御します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)