12

私が開発している社内アプリケーションが、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;

なぜこれが起こっているのか手がかりはありますか?

4

1 に答える 1

30

このバグを回避するには、 に設定printDialog.UseEXDialogします。true

.Net 3.5 では、MSDN は文書化する際にこの潜在的な問題について言及していますUseEXDialog

このプロパティが に設定されている場合、これらのプロパティは Windows 2000 以降のバージョンの Windows では廃止されたため、無視されますtrueまた、プロパティを に設定しない限り、このクラスは AMD64 マイクロプロセッサでは機能しない場合がありますShowHelpShowNetworkPrintDialogUseEXDialogtrue

(私の強調。)

.Net 4.Net 4.5の同じページには強調されたビットが含まれていないため、これらのバージョンでは修正されている可能性があります。

于 2009-11-16T10:33:07.987 に答える