2009-11-16 13 views
12

Gelişmekte olduğum bir şirket içi uygulama, Windows 7 (64 bit) PC'de garip davranıyor.PrintDialog.ShowDialog (this) hemen Windows 7'de DialogResult.Cancel'i döndürür

Bir PrintDialog örneği oluşturup ShowDialog() yöntemini çağırırsam, yöntem hemen iletişim iletişim kutusunu göstermeden DialogResult.Cancel'i döndürür.

Windows 7 PC'de yüklü yazıcılar var (çalışan bir varsayılan yazıcıyla).

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; 

Bunun neden olduğuyla ilgili ipuçları var mı?

cevap

30

Bu hata hakkında çalışmak için printDialog.UseEXDialog değerini true olarak ayarlayın. .NET 3.5, MSDN mentions this potential problem yılında

UseEXDialog belgeleyen:

bu özellikler Windows 2000 ve Windows'un sonraki sürümleri için eskimiş yapılmış gibi true, ShowHelp ve ShowNetwork göz ardı edilecektir için bu özellik ayarlanır

. Ayrıca, UseEXDialog özelliğini true olarak ayarlamadığınız sürece, PrintDialog sınıfı AMD64 mikroişlemciler üzerinde çalışmayabilir.

(My vurgu.)

.Net 4 için

aynı sayfa ve .Net 4.5 yüzden belki bu o sürümlerinde düzeltilenekadar vurguladı biraz içermez.

+1

İyi bir ipucu gibi görünüyor, ama bir referansınız var mı? –

+2

Teşekkürler, ilgilenen herkes için, UseExDialog için MSDN makalesi hakkında daha fazla yorum var - http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx – Bryan

+0

İlk googling yararlı bir şey bulamadım, ancak şimdi çözümü biliyorum, bu konuda bir sürü okuma malzemesi var http://www.google.com.tr/search?q=UseExDialog+cancelled – Bryan