C# 如何使鼠标滚轮工作而不必首先聚焦窗体?

C# 如何使鼠标滚轮工作而不必首先聚焦窗体?,c#,winforms,reportviewer,C#,Winforms,Reportviewer,我有一个窗体,上面只有一个ReportViewer控件。显示表单时,如果单击报告,则可以使用鼠标滚轮垂直滚动 我希望表单一出现就可以滚动 我试过以下方法,但没有骰子 private void ReportViewer_Load(object sender, EventArgs e) { rptViewer.Focus(); } private void ReportViewer_Activated(object sender, EventArgs

我有一个窗体,上面只有一个ReportViewer控件。显示表单时,如果单击报告,则可以使用鼠标滚轮垂直滚动

我希望表单一出现就可以滚动

我试过以下方法,但没有骰子

    private void ReportViewer_Load(object sender, EventArgs e)
    {
        rptViewer.Focus();
    }

    private void ReportViewer_Activated(object sender, EventArgs e)
    {
        rptViewer.Focus();
    }

将代码放在表单的构造函数中,就在
InitializeComponent()之后


是否尝试调用rptView.Activate()

另外,也可能是在加载事件完成后,表单得到了关注(我想我以前在这方面遇到过问题)。一种解决方案是创建一个一次性计时器,它在加载方法运行时启动,在1ms后启动,然后停止,尽管它肯定不是很优雅。当计时器启动时,它将激活/聚焦ReportViewer


您还可以尝试将鼠标滚轮事件处理程序添加到表单中。触发事件时,向ReportViewer发送滚动消息以向上或向下滚动。然后,不管您的ReportViewer是否具有焦点,当窗体具有焦点时,它(应该)始终滚动。

设置后
rptViewer.focus
调用
SendKeys.Send(Chr(Keys.Tab))
将焦点从菜单移动到预览区域

rptViewer.Select();