2009-11-16 8 views
12

Eine interne Anwendung, die ich entwickle, verhält sich seltsam auf einem Windows 7 (64 Bit) PC.PrintDialog.ShowDialog (this) gibt sofort DialogResult.Cancel unter Windows 7 zurück

Wenn ich eine Instanz eines PrintDialogs erstellen und die ShowDialog() -Methode aufrufen, gibt die Methode DialogResult.Cancel sofort zurück, ohne das Druckerdialogfeld anzuzeigen.

Auf dem Windows 7 PC sind Drucker installiert (mit einem funktionierenden Standarddrucker).

PrintDialog printDialog = new PrintDialog(); 

printDialog.PrinterSettings.Copies = 2; 
printDialog.AllowCurrentPage = false; 
printDialog.AllowPrintToFile = false; 
printDialog.AllowSelection = false; 
printDialog.AllowSomePages = false; 
DialogResult dialogResult = printDialog.ShowDialog(this); 

if (dialogResult == DialogResult.Cancel) 
    return; 

Irgendwelche Hinweise, warum dies geschieht?

Antwort

30

Setzen Sie printDialog.UseEXDialog auf true um diesen Fehler zu umgehen.

In .Net 3.5, MSDN mentions this potential problem wenn UseEXDialog Dokumentation:

Wenn diese Eigenschaft auf true, ShowHelp und ShowNetwork werden, da diese Eigenschaften für Windows 2000 und höher obsolet ignoriert werden Versionen von Windows vorgenommen wurden. Die Klasse PrintDialog funktioniert möglicherweise auch nicht mit AMD64-Mikroprozessoren, wenn Sie die UseEXDialog-Eigenschaft nicht auf true setzen.

(Hervorhebungen von mir.)

Die gleiche Seite für .Net 4 und .Net 4.5 enthält nicht betont Bit, so ist es vielleicht in diesen Versionen behoben.

+1

Klingt wie ein guter Tipp, aber haben Sie eine Referenz? –

+2

Danke, für alle anderen interessiert, der MSDN-Artikel für UseExDialog hat weitere Kommentare dazu - http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx – Bryan

+0

Meine anfängliche googeln habe nichts brauchbares gefunden, aber jetzt, da ich die Lösung kenne, gibt es viel Lesematerial zu dieser Ausgabe http://www.google.de/search?q=UseExDialog+ancancelled – Bryan

Verwandte Themen