4

これは非常に奇妙です。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() では機能します。

どんなアイデアでも大歓迎です!

4

1 に答える 1

1

これは他の場所で回答されていると思います:

http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/a707d202-1a8b-43b1-9fff-08aa7ceb200a/

USEExDialog = True を設定してみてください - 動作するはずです。

于 2012-04-05T13:59:26.960 に答える