在打印预览模式下获取ReportViewer的当前页面

本文关键字:ReportViewer 当前页 获取 打印 模式 | 更新日期: 2023-09-27 18:11:43

在正常模式下(默认情况下,在第一次加载ReportViewer与本地报告),我可以得到CurrentPage正确,这是当前视图模式下的当前页面。

但是在切换到预览模式(可以使用SetDisplayMode(DisplayMode.PrintLayout)完成)之后,我无法获得CurrentPage的值,这是我可以访问的唯一属性,以了解ReportViewer的当前页面。我需要实现这一点,因为我想为reportviewer定制我自己的工具栏,它几乎已经完成,除了CurrentPage在切换到PrintLayout模式后似乎被固定为1。

下面是显示当前页面的代码:
private void BindData(){
   myTextBox.DataBindings.Clear();
   myTextBox.DataBindings.Add("Text", myReportViewer, "CurrentPage");
}
//Register some events to re-bind data and get other updated info (such as TotalPages)...
myReportViewer.RenderingComplete += (s,e) => {
     BindData();
};
myReportViewer.PageSettingsChanged += (s,e) => {
     BindData();
};

在正常模式下工作OK (PageSettingsChanged处理程序是为切换到PrintLayout模式而添加的,但它似乎不起作用,它确实有助于更新TotalPages,可以使用GetTotalPages()方法实现,但是绑定在切换到PrintLayout模式后不再工作)。

非常感谢您的帮助!

提前非常感谢!

在打印预览模式下获取ReportViewer的当前页面

当前页未固定为1

这里的问题是RenderingComplete不被调用,如果你交换页面你需要使用PageNavigationevent

myReportViewer.PageNavigation += myPageNavigation
void myPageNavigation(object sender, PageNavigationEventArgs e)
{
    MessageBox.Show("CurrentPage will be" +e.NewPage);
}