报告查看器 - 系统DPI更改时的扩展问题

dav*_*d l 7 c# reportviewer winforms

我有一个Winforms应用程序(在Visual Studio 2010中),其中包含一个报表查看器控件,可以预览和打印A4大小的报表.

一个用户将其Windows字体大小设置为150%(即系统DPI更改),并且当他运行报表时,它在报表查看器预览和打印报表中缩小到2/3大小.

包含报表查看器的表单的AutoScaleMode属性设置为"字体",但如果我更改它,它似乎不会影响报表.

这不是字体(缺失/缩放)问题,因为我有一个示例程序来演示除了占据整个页面的矩形之外什么都不包含的问题.

我似乎需要一些方法在报告本身中指定它应该以96dpi呈现,无论系统dpi设置如何,但无法看到我可以指定的任何地方.我错过了什么?

谢谢,大卫

JOM*_*Man 5

我遇到了同样的问题.WinForms ReportViewer已经具备DPI功能,并将自行扩展.您只需告诉系统您的应用程序是DPI识别的,以便系统不会尝试扩展它.

如果尚未添加清单,请在应用程序中添加清单,然后添加以下内容:

  <asmv3:application  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
Run Code Online (Sandbox Code Playgroud)

您也可以使用API​​函数SetProcessDPIAware,但建议不要使用:http: //msdn.microsoft.com/en-us/library/ms633543.aspx

  • 我使用“WindowsFormsHost”控件在 WPF 应用程序中嵌入了一个 Win Forms“ReportViewer”。WPF 应用程序始终将自身注册为 DPI 感知,但“ReportViewer”表现出此问题行为,因此此解决方案没有帮助。 (2认同)
  • 对我来说,不需要 `asmv3` 标签名称,我只是通过右键单击项目 -&gt; 添加新项目 -&gt; 应用程序清单(仅限 Windows)添加了一个新清单。生成的清单已包含“dpiAware”设置,您只需取消注释即可 (2认同)