Dot-Net

PrintDialog.ShowDialog(this) 在 Windows 7 上立即返回 DialogResult.Cancel

  • September 20, 2015

我正在開發的內部應用程序在 Windows 7(64 位)PC 上表現異常。

如果我創建一個 PrintDialog 的實例,並呼叫它的 ShowDialog() 方法,該方法會立即返回 DialogResult.Cancel 而不顯示列印機對話框表單。

Windows 7 PC 確實安裝了列印機(帶有工作的預設列印機)。

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;

任何線索為什麼會發生這種情況?

設置printDialog.UseEXDialogtrue解決此錯誤。

在 .Net 3.5 中, MSDN在記錄時提到了這個潛在的問題UseEXDialog

當此屬性設置為true時,ShowHelpShowNetwork被忽略,因為這些屬性在 Windows 2000 和更高版本的 Windows 中已過時。此外,除非您將屬性PrintDialog設置為 ,否則該類可能無法在 AMD64 微處理器上執行。UseEXDialog``true

(我的重點。)

.Net 4.Net 4.5的同一頁面不包括強調的位,因此可能在這些版本中已修復。

引用自:https://stackoverflow.com/questions/1741302