我的表单上有一个ListBox,上面注册了一个OnClick事件。此事件按预期运行,除了一种特殊情况:
我的表单包含一个SpinEdit(值8-12),以允许用户调整ListBox.Font.Size属性(我也相应地调整了ListBox.ItemHeight属性)。这些调整是在SpinEdits OnExit事件中完成的,并且也可以按预期进行。
但是,当选择SpinEdit时,会发生问题,更改值,然后单击ListBox。因此,应该发生的事情是:
触发了- SpinEdit OnExit:已调整ListBox.Font.Size。
- 已触发ListBox OnClick:OnClick事件中定义的后续操作。
但是实际上,仅激活了SpinEdits OnExit,并且正确调整了字体大小,但不会触发ListBox的OnClick事件。本身并没有什么大不了的,但是在那之后,整个列表框就变得对鼠标单击无响应了!
值得注意的观察结果
- 来回切换到另一个应用程序/窗口并切换回
我的应用程序:重新获得了ListBox的响应能力。
- 触发问题后,与具有相同表单的CheckListBox进行交互,然后单击ListBox会触发ListBox Onclick事件。
- 使用Enter键触发SpinEdits OnExit事件不会带来任何问题。
- 该窗体包含更多具有OnExit事件的SpinEdit对象,这些事件不会更改ListBox的属性。通过单击ListBox退出这些SpinEdits可以正常工作,并且在SpinEdits OnExit事件之后立即执行OnClick事件。