【发布时间】:2012-10-20 11:51:51
【问题描述】:
我在一个表单上有两个 FlowLayoutPanels:PanelA 和 PanelB。每个都将在运行时填充多个控件,以便面板滚动(即AutoScroll 为真)。
问题出在:面板填充的每个控件都包含一个ComboBox。因此,MouseWheel 事件由组合框而不是面板使用。我希望面板使用 MouseWheel 事件。
如果子控件上没有可滚动控件,则MouseWheel 事件会跳过子控件(它不处理它)并点击处理它的面板。如何设置我的子控件的组合框以忽略 MouseWheel 事件?我可以告诉它重新发起活动吗?
每当其中一个子控件勾选“MouseEnter”事件时,我尝试将焦点应用于父级;这解决了滚动问题,但也使子控件完全不可编辑。
我从挖掘中发现的其他一些东西涉及直接摆弄 Windows API,但我发现很难相信这样的东西是必需的。
【问题讨论】:
-
明确一点,当您单击面板并滚动时,组合框仍然会吃掉事件,对吗?
-
@Kreep:正确。功能看起来如下:如果单击子控件,焦点默认为通过选项卡索引(组合框,它消耗滚轮事件)的第一个可焦点控件。如果在子控件中选择了另一个不消耗滚轮事件的可聚焦控件,则面板将按预期滚动。