如何在 wxWidgets 中从子 wxScrollWindow 内部滚动父 wxScrollWindow

How to Scroll Parent wxScrollWindow from Inside Child wxScrollWindow in wxWidgets

您好,我正在使用 wxScrollWindow 并且有 2 个 wxScrollWindows。它们都可以单独正常工作。

  1. 第一个wxScrolledWindow水平滚动,第二个scrollWindow垂直滚动。
  2. 第一个 wxScrolledWindow 嵌入了第二个 scrolledwindow。 下面附上用于说明目的的屏幕截图。

问题是,当我在第二个滚动 window(垂直)内时,我无法水平滚动。在屏幕截图中,第二个滚动 window 包含从 button1 到 button20 的按钮。所以我可以垂直滚动这些按钮。类似地,第一个 scrolledwindow 有许多可水平滚动的 wxPanel。当光标位于任何按钮顶部时我尝试水平滚动时出现问题。因此,要水平滚动,我必须首先将光标移动到任何标签(在屏幕截图中显示为 label1 到 label5),然后开始水平滚动。当光标位于任何按钮顶部时,我还如何启用水平滚动。我正在考虑使用 event.Skip() 将子滚动事件转发给父(第一个)滚动window,但我不确定这将如何工作。屏幕截图中显示的按钮位于只能垂直滚动的 wxScrolledWindow 内。因此,当用户尝试水平滚动按钮时,它们不会按预期移动。但是我希望当用户尝试水平滚动按钮时父滚动window应该移动(滚动)。

我已经通过编写我自己的派生自 wxEvent 的自定义事件 class 解决了这个问题,现在一切都按预期工作。也就是说,我能够从子滚动窗口(垂直)中控制父滚动窗口(水平)的滚动。