首页 > 解决方案 > C# Windows 窗体/用户控件在单击控件后不使用鼠标滚轮滚动

问题描述

我在Visual Studios 2013中使用C#构建了一个Windows Form ,它有一个实际的 Form.cs。我在 Form.cs 中有一个面板,我根据需要与 UserControl.cs 文件对接/填充。UserControls 是我用作用户填写控件/字段并提交所需数据的实际“用户输入表单”。除了用鼠标滚轮滚动外,我的一切都完全/正确地工作。

这是我试图寻找解决方案的典型场景;当用户第一次导航到其中一个 UserControls 时,他们可以单击窗口的空白部分,这将允许使用右侧的垂直滚动条或使用鼠标滚轮进行滚动。但是,当用户单击 UserControl 中的任何控件、文本框、列表框、组合框等时,鼠标滚动将不再滚动窗口。我无法找到如何通过将焦点从控件/字段移到 UserControls 背景或其他位置来允许鼠标滚轮滚动以允许用户鼠标滚轮滚动窗口。

我必须明确的一件事是 UserControls 确实有可用的垂直滚动条,因此用户可以单击滚动条向上/向下移动窗口,因此这部分不是问题。我只是无法找到一种方法来允许用户在单击 UserControl“表单”中的任何控件/字段后使用鼠标滚轮滚动。如何将焦点从任何控件/字段移到 UserControls 背景或其他位置以允许鼠标滚轮滚动窗口/表单/UserControl?

编辑:我在 Form.cs 和停靠面板上将 AutoScroll 设置为 False,但是,我在每个 UserControls 上都将 AutoScroll 设置为 True。这允许渲染和使用右侧滚动条,但这似乎对鼠标滚动没有任何影响。我已经尝试了设置 AutoScroll 的所有组合,但都没有成功。

编辑(2): * * 表单 - panel1 ^ UserControl1.cs ^ UserControl2.cs ^ UserControl3.cs ^ UserControl4.cs ^ UserControl5.cs

根据用户选项,每个 UserControl 都被应用到/呈现在 panel1 上。每个 UserControl 在右侧都有垂直滚动条呈现。用户单击/选择任何控件(文本框、列表框、组合框)以输入/选择数据后,鼠标滚动不起作用。无论单击什么控件并获得焦点,焦点都不会移动以允许鼠标滚轮滚动窗口。

标签: c#winformsscrolluser-controls

解决方案


这不是我认为最理想的答案,但您可以添加Form.Focus();到表单中每个控件的滚动事件。


推荐阅读