【问题标题】:ComboBox hidden behind Button not triggering on Click event隐藏在 Button 后面的 ComboBox 未触发 Click 事件
【发布时间】:2012-06-26 01:09:26
【问题描述】:

我正在将一个旧的 VB 表单转换为 .NET,并且有几个按钮,每个按钮后面都隐藏着一个对应的 ComboBox。之前的行为是您单击 Button,这将触发其后面的 ComboBox,然后下拉选择列表。我相信这个想法是有一个静态颜色和文本标签(它不能是下拉列表中的可选选项),具有组合框的功能。

现在,在 VB.NET 中,单击按钮 (直接位于表单中的 ComboBox 上方) 将不再触发 ComboBox 下拉菜单。但是,如果我使 ComboBox 可见到足以单击,它将触发ComboBox.TextChanged 事件,并显示下拉(它们设置为DropDownList 样式)。我已设置事件处理程序来处理该事件和 Button 事件。我尝试过Button.MouseDownButton.MouseClickButton.Click——都没有奏效。

我确实找到了 SplitButton 控件选项suggested here,它可能会完成这项工作,但我不想只为 3 个按钮集成非本机控件。我也不是真的想mess with the control template——而且我不确定这是否是一个解决方案,无论如何。

为什么 ComboBox 没有触发?

【问题讨论】:

    标签: vb.net winforms vb6-migration


    【解决方案1】:

    我不确定您到底想在视觉上做什么。但是您可以在您的 Button Click 事件中将 ComboBox.DroppedDown 属性设置为 True 以触发 DropDown。应该是这样的。

    【讨论】:

    • 基本上,我试图让 ComboBox 具有静态外观。这以前是通过将 ComboBox 隐藏在按钮后面并在单击按钮时触发下拉菜单来“伪造”的。
    • @Wingman4l7 我刚刚添加了一张图片,这就是你想要的吗?
    • 是的,这就是我要找的;该解决方案听起来应该可行,但我正在对其进行测试,但似乎没有。我仍然很好奇为什么当在其位置内发生点击时,另一个控件“后面”的控件不会触发。
    • @Wingman4l7 Button 处理 Click 事件,而 ComboBox 永远不会看到它。我只是将 ComboBox1.DroppedDown = True 放在按钮单击事件中,它就起作用了。您想要的更像是 WPF 中的路由事件
    • @Wingman4l7 要进一步解释发生了什么,请查看CodeProject Article
    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多