如何在Winforms应用程序中使用MouseWheel滚动MDI父窗口

发布于 2024-07-24 11:03:57 字数 215 浏览 6 评论 0原文

我有一个 VB.Net Winforms 应用程序,它显示 MDI 父窗体并允许在其上显示多个子窗体。 如果子窗体超出屏幕高度,则 MDI 父窗体和子窗体的右侧会自动显示垂直滚动条。 我可以使用此滚动条将子表单滚动到视图中。

但是,鼠标滚轮对此滚动条没有影响。 如何让鼠标滚轮滚动子窗体?

我可以处理鼠标滚轮事件,但我不知道在处理它们以启用窗口滚动后如何处理它们。

I have a VB.Net Winforms app which displays an MDI parent form and allows multiple child forms to be displayed on it. If the child forms extend beyond the screen height, a vertical scrollbar is automatically displayed on the right side of the MDI Parent & I can use this scrollbar to scroll the child forms into view.

But, the mousewheel has no effect on this scrollbar. How can I make the mousewheel scroll the child forms?

I can handle mousewheel events, but I am not sure what to do with them once I handle them to enable scrolling of the window.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡绿茶香 2024-07-31 11:03:57

捕获鼠标滚轮事件后,只需调用正在滚动的控件的 SetDisplayRectLocation() 即可。 类似于

myControl.SetDisplayRectLocation(
            myControl.DisplayRectangle.X, 
            myControl.DisplayRectangle.Y + MouseWheelDelta * ScrollAmount
          );

(ScrollAmount 是您定义的常量 - 从 30 像素开始)。

您还需要在主窗体上调用AdjustFormScrollbars() 来更新滚动条位置。

(抱歉,这是 C#——我不知道 VB 语法)

Once you capture the mousewheel event, simply call SetDisplayRectLocation() of the control being scrolled. Something like

myControl.SetDisplayRectLocation(
            myControl.DisplayRectangle.X, 
            myControl.DisplayRectangle.Y + MouseWheelDelta * ScrollAmount
          );

(ScrollAmount is a constant you define -- start with 30 pixels).

You also need to call AdjustFormScrollbars() on the main form as well to update the scroll bar location.

(Sorry, that's C# -- I don't know VB syntax)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文