如何在不首先关注表单的情况下使MouseWheel工作?

时间:2014-08-06 13:42:32

标签: c# winforms reportviewer

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

我希望能够在表单出现后立即滚动。

我已尝试过以下内容,但没有骰子......

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

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

3 个答案:

答案 0 :(得分:1)

InitializeComponent();

之后立即将代码放在表单的构造函数中
rptViewer.Select();

答案 1 :(得分:0)

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

也可能是您的表单在加载事件完成后获得焦点(我认为之前我已经遇到过问题)。一种解决方案是,尽管绝对不优雅,但是创建一个一次性的Timer,它在Load方法运行时启动,并在1 ms后触发,然后停止。当Timer触发时,它将激活/聚焦ReportViewer。

您还可以尝试将MouseWheel事件处理程序添加到表单中。触发事件时,向ReportViewer发送滚动消息以向上或向下滚动。然后,无论ReportViewer是否具有焦点都无关紧要,它(应该)始终在表单具有焦点时滚动。

答案 2 :(得分:0)

设置rptViewer.Focus调用SendKeys.Send(Chr(Keys.Tab))后,将焦点从菜单移至预览区域。