我正在编写一些代码,用于检测在MultiSelect模式下的WindForms ListBox中选择的切换。由于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事件消失时,它才会触发。
希望这样能更加清晰明了。