2014-05-01 13 views
5

Ho un'applicazione Winforms (in Visual Studio 2010) che contiene un controllo Report Viewer che visualizza in anteprima e stampa un report in formato A4.Report Viewer - problema di ridimensionamento con modifica del DPI del sistema

Un utente ha le dimensioni del carattere di Windows impostate su 150% (ovvero una modifica DPI di sistema) e quando esegue il report viene ridotto a 2/3 in entrambe l'anteprima del Visualizzatore report e il report stampato.

La proprietà AutoScaleMode del modulo che contiene il Report Viewer è impostata su "Font", anche se non sembra influire sul rapporto se lo cambio.

Questo non è un problema di font (mancante/ridimensionamento) poiché ho un programma di esempio per dimostrare il problema che non contiene nient'altro che un rettangolo che occupa l'intera pagina.

Sembra che io abbia bisogno di un modo per specificare nel report stesso che dovrebbe essere reso a 96 dpi indipendentemente dall'impostazione dpi del sistema, ma non può vedere da nessuna parte che posso specificarlo. Cosa mi manca?

Grazie, David

+0

Il visualizzatore di report è una casella nera. Segnala bug di ridimensionamento DPI a connect.microsoft.com in modo che possano risolverli. –

+0

Stesso problema ma nel 2012. L'anteprima di stampa e il rapporto stampato contengono entrambi contenuti ridotti. È come un calcolo per compensare l'aumento dello schermo DPI è andato storto. Hai trovato un modo per risolvere questo problema? – Gavin

+1

@Gavin - no, non ho trovato una soluzione. Per ovviare al problema, selezionare "Disabilita ridimensionamento dello schermo su impostazioni DPI elevate" nelle impostazioni di compatibilità per .exe sembra risolvere il problema (questo è su Windows 7). –

risposta

3

Ho incontrato lo stesso problema. WinForms ReportViewer è già a conoscenza DPI e farà il proprio ridimensionamento. Devi solo dire al sistema che la tua applicazione è a conoscenza DPI in modo che il sistema non tenti di ridimensionarlo dopo.

aggiunge un manifesto per l'applicazione se non l'hai già fatto, quindi all'interno del tag, aggiungere il seguente:

<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> 

È inoltre possibile utilizzare una funzione API SetProcessDPIAware, ma si consiglia di contro: http://msdn.microsoft.com/en-us/library/ms633543.aspx

+0

Ho avuto lo stesso problema e questo l'ha risolto. – Daws

+0

Ho un 'ReportViewer' di form di Windows incorporato in un'applicazione WPF usando il controllo' WindowsFormsHost'. Le applicazioni WPF si registrano sempre come sensibili al DPI, ma il 'ReportViewer' mostra questo comportamento problema, quindi questa soluzione non aiuta. –

Problemi correlati