我在 UI 中有几个组合框,每个组合框都有一长串相似的条目(数字)。当用户从一个组合框中选择一个项目时,我知道用户会从其他组合框中选择一个具有相似值(但可能不相同)的条目。因此,在用户选择了一个值后,为了避免强迫用户进行大量滚动,我想将下一个组合框下拉菜单“预滚动”到最后一个选择的值附近(当这个下拉菜单没有已经有选择)。
到目前为止,我已经通过使用
combobox.SelectedItem = myLastSelectedItem;
在 combobox.DropDown 事件处理程序中。
然后,当下拉菜单关闭时,我需要能够检测用户是否点击了下拉菜单中的项目。如果用户没有单击某个项目,那么我必须将所选值重置为之前的值(无)。用户可能单击了 myLastSelectedItem 或其他项目(因此,我不能只将当前选定的项目与 myLastSelectedItem 进行比较,因为即使用户确实单击了它们也可能相同)。SelectedValueChange、SelectedIndexChange、TextChanged 都在 DropDownClosed 事件之后被触发,因此我无法使用它们。MouseClick 事件根本不会被触发。
因此,我如何检测到用户点击了组合框下拉菜单中的项目(而不是因为用户点击了下拉菜单或按下了退出而关闭了下拉菜单)?