Microsoft.ReportViewer.WinForms 预览打印显示

.net winform使用 Microsoft.ReportViewer.WinForms ReportViewer读取rdlc 报表预览,内容在win10系统125%分辨率不居中的情况,如何处理?目前除了手动更改分辨率没找到更好的办法。

来自 梦想橡皮擦 狂飙组基于 GPT 编写的问答软件

你可以在RDLC报表的详细设计中通过调整控件的布局和大小来使其适应不同的分辨率。

另外,你可以使用代码在运行时动态更改报表的控件的布局和大小,以适应当前的系统分辨率。

具体来说,你可以在代码中读取当前的分辨率,然后在Microsoft.ReportViewer.WinForms控件中根据分辨率动态调整控件的布局和大小。

以下是一个示例代码:

private void Form1_Load(object sender, EventArgs e)
{
    float dpi = this.CreateGraphics().DpiX;
    float scale = dpi / 96.0f;

    this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
    this.reportViewer1.ZoomPercent = (int)(100 * scale);
}

该代码在加载窗口时读取当前分辨率,然后根据读取的分辨率计算缩放比例,并使用该缩放比例设置Microsoft.ReportViewer.WinForms控件的缩放百分比。

补充:在win10 125%分辨率情况下,内容如图:

img

在win10 手动调整100%分辨率情况下,如图:

img

内容的居中,并非说是A4纸张放大。

看下你的预览设置是否是固定写死的,要改为相对居中

这个输出默认是表格样式;因为默认表格应该是嵌入在div中,你可以找到表格上一级div,增加样式控制;你可以在Reportviewer页面中添加样式,代码如下

<style type="text/css">

  /*设置id后缀为“ReportDiv”的div,根据你的table上一级div设置固定id=ReportDiv属性
  div[id$="ReportDiv"] > table{margin:auto}
</style>

之所以你的125%不居中,可能就是您的div使用百分比导致的

假如能够修改表格属性,可以给表格加style属性

style="margin:0 auto;"

可以在 ReportViewer 的属性中设置 ZoomMode 属性为 "PageWidth",然后调整报表的大小,以适应分辨率的变化。还可以在 rdlc 报表的 Page 标签中设置 PageSize 属性,以控制页面大小。请注意,如果报表中包含图像或其他固定大小的对象,则可能需要执行额外的调整。