C#Winform - 检测一个用户操作是否触发了两个事件

时间:2017-09-12 08:38:32

标签: c# winforms combobox event-handling

我有一个Winform的组合框,当然我需要知道用户何时选择了一个选项。问题是每种事件类型都有其缺点:

当使用关闭下拉列表进行选择时,

textChanged不会被触发(但是通过聚焦组合框并使用键盘箭头向上和向下移动)。

当下拉列表打开时,SelectionChangeCommittedHandler不被触发,用户通过键盘箭头上下移动,然后在组合框标题或外部单击鼠标。

SlectedIndexChangedHandler被触发太多次,因此在网络连接较弱的情况下会使程序变慢。

所以我想做那个解决方案:

注册SelectionChangeCommittedHandler和textChanged事件,如果两者都被触发,请忽略其中一个。问题是我不知道如何检测这种情况(=来自一个用户操作的两个事件)。

我很高兴知道如何检测到,或者,如果有,可以听到更好的解决方案。

1 个答案:

答案 0 :(得分:1)

有点脏,但我试图给你一个解决方案:听取这两个事件并在每次触发时标记一个时间戳。一旦事件触发,检查当前时间与上次操作时间,并且给定容差,您将决定,仅在自上次操作后经过一定时间后继续您的程序逻辑。

我想大约100毫秒的东西就足够了,但你自己试试。