MultiSelectがオンになっているWindFormsリストボックスで選択の切り替えを検出するコードを書いています。SelectedIndexChangedを使用すると、クリック後に選択されたものしか表示されないため、ListBoxがクリックされる前に選択されたものを検出する方法を探していました。MouseDownイベントを実装したところ、必要なものを正確に取得できましたが、残念な副作用として、SelectedIndexChangedイベントを強制終了しました。発火しません。
これは既知の動作ですか?クリックする前に選択リストにアクセスすることについて何か考えはありますか?
ありがとう。
要求に応じてコードスニペットを含めるように編集しました。
デザイナーが生成したイベント:
this.lbPhysicianClinic.SelectedIndexChanged += new System.EventHandler( this.lbPhysicianClinic_SelectedIndexChanged );
this.lbPhysicianClinic.MouseDown += new System.Windows.Forms.MouseEventHandler( this.lbPhysicianClinic_MouseDown );
MouseDownイベントを示すコードスニペット:
private void lbPhysicianClinic_MouseDown( object sender, MouseEventArgs e )
{
List<Clinic_List_ByPhysicianResult> Selected = this.PhysicianGetSelectedClinics( this.lbPhysicianClinic.SelectedIndices );
}
SelectedIndexChangedイベントを示すコードスニペット:
private void lbPhysicianClinic_SelectedIndexChanged( object sender, EventArgs e )
{
try
{
if ( this.FormInitComplete && this.RefreshUIComplete )
{
List<Clinic_List_ByPhysicianResult> Selected = this.PhysicianGetSelectedClinics( this.lbPhysicianClinic.SelectedIndices );
Clinic_List_ByPhysicianResult DroppedClinic = new Clinic_List_ByPhysicianResult();
各イベントにブレークポイントを設定しましたが、MouseDownイベントが存在する場合、SelectedIndexChangedイベントは発生しません。MouseDownイベントがなくなったときにのみ発生します。
うまくいけば、これは物事を明確にします。