C# WinForms组合框检测项目是否被选中-即使项目相同

C# WinForms组合框检测项目是否被选中-即使项目相同,c#,winforms,events,combobox,C#,Winforms,Events,Combobox,这个问题与WinForms类似 当用户在组合框中选择一个项目时,即使该项目之前已被选中,我也希望执行一些附加代码。如果用户只是打开和关闭下拉列表,我不希望代码运行 SelectionChanged、ValueChanged和DropDownClosed到目前为止都不起作用。ValueChanged是最好的,但不是100%符合我的要求。我想要一个ValueSelected事件。WinForms的组合框在任何时候选择一个项目时都会引发和事件,不管它是否是相同的索引。 如果只打开和关闭下拉列表,则不会

这个问题与WinForms类似

当用户在组合框中选择一个项目时,即使该项目之前已被选中,我也希望执行一些附加代码。如果用户只是打开和关闭下拉列表,我不希望代码运行


SelectionChanged、ValueChanged和DropDownClosed到目前为止都不起作用。ValueChanged是最好的,但不是100%符合我的要求。我想要一个ValueSelected事件。

WinForms的组合框在任何时候选择一个项目时都会引发和事件,不管它是否是相同的索引。
如果只打开和关闭下拉列表,则不会引发这些事件。

解决方法:DropDownOpen>清除选择>DropDownClosed>如果用户未重新填写选择,则恢复选择Yes。从来没有明确提到过,但用户很容易被它搞糊涂。真遗憾,但我在搜索了一段时间后也这么想。清除选择不是防止用户混淆的选项。继承是一种选择,但似乎有些过分。即使这样,我也需要看到我涵盖了所有的情况——并且通常对自己的控件没有很好的经验,这些控件应该在100%的情况下都能工作。@AndreasReiff我知道你的意思,在任何平台上,组合框都是最难正确实现的控件之一。我们的组合框的JS实现是网格组件大小的10倍,例如,有太多的东西要覆盖。出于好奇,您的问题的实际用例是什么?只是客户机的请求还是其他什么?组合框包含sql查询的参数,例如。G过滤公司x,过滤地区y。这些过滤器是可选的。该部分由每个组合框的复选框反映,该组合框启用/禁用查询中的参数。我想自动设置复选框,如果用户认为他已经通过摆弄参数启用了参数。@AndreasReiff如果没有选中相应的复选框,为什么不干脆禁用并清除组合框?这样,为了摆弄组合框,他们必须认真地启用字段过滤器。或者去掉复选框,将项0设为[无筛选]项。以提供有意义的默认值。在这里给出的示例中,很难给出具体的内容,但我们也使用DateTimPickers,并且我们有默认设置,如周初/月初/季度作为预设值,即使参数未启用,因为如果有人确实希望按日期过滤,这是第一选择。顺便说一句,我们在复选框上总是需要认真的努力,但是现在我们收到了第一个关于额外点击的抱怨,并且忘记了它,然后查询可能用错误的参数运行了一分钟9。