これは非常に奇妙です。C# の ShowDialog でこの問題が発生したことはありません。奇妙な理由により、64 ビット OS 用に開発されたコードがプリンター ダイアログを表示しようとすると、表示されず、DialogResult が「None」になります。各行をステップ実行してデバッグしましたが、手がかりはありません。名前空間を確認し、適切な参照を設定したことを確認しました。
using System.IO;
using System.Windows.Forms;
コードは次のとおりです。
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
printDoc.DefaultPageSettings = pgSettings;
PrintDialog dlg = new PrintDialog();
dlg.Document = printDoc;
if (dlg.ShowDialog() == DialogResult.OK)
{
printDoc.Print();
}
}
32 ビット マシン用のほぼ同じバージョンのまったく同じコードは問題ありません。ダイアログが表示され、ユーザーがプリンターを選択し、[OK] を押すと、タスクは完了します。
64 ビット バージョンでは、ShowDialog() は PrintDialog() では機能しませんが、PrintPreviewDialog() では機能します。
どんなアイデアでも大歓迎です!