2009-11-16 9 views
12

Aplikacja w domu, który rozwijam, zachowuje się dziwnie na komputerze z Windows 7 (64-bitowym).PrintDialog.ShowDialog (this) natychmiast zwraca DialogResult.Cancel w systemie Windows 7

Jeśli utworzę instancję PrintDialog i wywołam metodę ShowDialog(), metoda natychmiast zwróci DialogResult.Cancel bez wyświetlania formularza okna dialogowego drukarki.

Komputer z systemem Windows 7 ma zainstalowane drukarki (z działającą domyślną drukarką).

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; 

Jakieś wskazówki, dlaczego tak się dzieje?

Odpowiedz

30

Ustawienie printDialog.UseEXDialog na true w celu obejścia tego błędu.

w .NET 3.5, MSDN mentions this potential problem podczas dokumentowania UseEXDialog:

Gdy ta właściwość jest ustawiona na true, ShowHelp i ShowNetwork zostanie zignorowany, ponieważ te właściwości zostały wykonane przestarzały dla Windows 2000 i nowszych wersjach systemu Windows. Ponadto, klasa PrintDialog może nie działać na mikroprocesorach AMD64, chyba że ustawisz właściwość UseEXDialog na .

(Moje podkreślenie.)

tej samej stronie za .Net 4 i .Net 4.5 nie zawierają podkreślił trochę, więc może to ustalone w tych wersjach.

+1

Brzmi jak dobra wskazówka, ale czy masz referencję? –

+2

Dzięki, dla wszystkich zainteresowanych, artykuł MSDN dla UseExDialog ma więcej komentarzy na ten temat - http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx – Bryan

+0

Moje początkowe googlowanie nie znalazłem nic przydatnego, ale teraz, gdy znam już rozwiązanie, jest mnóstwo lektur na ten temat: http://www.google.co.uk/search?q=UseExDialog+cancelled – Bryan

Powiązane problemy