我有一个Winform的组合框,当然我需要知道用户何时选择了一个选项。问题是每种事件类型都有其缺点:
当使用关闭下拉列表进行选择时,textChanged不会被触发(但是通过聚焦组合框并使用键盘箭头向上和向下移动)。
当下拉列表打开时,SelectionChangeCommittedHandler不被触发,用户通过键盘箭头上下移动,然后在组合框标题或外部单击鼠标。
SlectedIndexChangedHandler被触发太多次,因此在网络连接较弱的情况下会使程序变慢。
所以我想做那个解决方案:
注册SelectionChangeCommittedHandler和textChanged事件,如果两者都被触发,请忽略其中一个。问题是我不知道如何检测这种情况(=来自一个用户操作的两个事件)。
我很高兴知道如何检测到,或者,如果有,可以听到更好的解决方案。
答案 0 :(得分:1)
有点脏,但我试图给你一个解决方案:听取这两个事件并在每次触发时标记一个时间戳。一旦事件触发,检查当前时间与上次操作时间,并且给定容差,您将决定,仅在自上次操作后经过一定时间后继续您的程序逻辑。
我想大约100毫秒的东西就足够了,但你自己试试。