我正在编写一些代码来检测打开 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 事件消失时触发。
希望这可以澄清事情。