我如何使鼠标滚轮工作,而不首先必须集中的形式



我有一个只有ReportViewer控件的表单。在显示表单时,如果您单击报表,则可以使用鼠标滚轮垂直滚动。

我想能够滚动,只要表单出现。

我试过下面的方法,但是没有成功…

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

把你的代码放在表单的构造函数中,就在InitializeComponent();:

rptViewer.Select();

设置rptViewer.Focus后,呼叫SendKeys.Send(Chr(Keys.Tab))将焦点从菜单移动到预览区

是否尝试调用rptView.Activate()?

也可能是你的形式得到焦点后加载事件完成(我想我以前有过的问题)。一个解决方案是,虽然它肯定不是很优雅,创建一个单次使用的定时器,当你的Load方法运行时启动,并在1毫秒后触发,然后停止。当Timer触发时,它将激活/聚焦您的ReportViewer。

您还可以尝试在表单中添加MouseWheel事件处理程序。当事件被触发时,向ReportViewer发送滚动消息以向上或向下滚动。那么不管你的ReportViewer是否有焦点,当窗体有焦点时,它(应该)总是滚动。

最新更新