none
64bit環境でSystem.Windows.Forms.PrintDialogが使えない? RRS feed

  • 質問

  • 32bit環境では問題ないのですが、64bit環境でSystem.Windows.Forms.PrintDialogを使っても、プリントダイアログが表示されません。

    ShowDialogを行っても表示されず、かつ、表示されてもいないのに戻り値はDialogResult.Cancelが返ってきます。

    ちなみに言語はC#で、開発環境はVS2005(WindowsXP),2008(WindowsVista64bit)の両方で試しましたが同じでした。
    (64bitの実行環境としては、VistaとWIndowsServer2008で試してみました)

    なお、VS2005で対象CPUをx86に限定してビルドしたところ、64bit環境でも32bit扱いで動作するようになり、その場合には正常にプリントダイアログが表示されました。

    これは一体何なのでしょう?
    2009年11月4日 12:34

回答

  • PrintDialog.UseEXDialog プロパティをtrueにするそうです。
    AMD64 マイクロプロセッサの場合、PrintDialog クラスは、UseEXDialog プロパティを true に設定しないと動作しない可能性があります。
    • 回答としてマーク まに 2009年11月4日 13:28
    • 回答としてマークされていない まに 2009年11月4日 13:28
    • 回答としてマーク まに 2009年11月4日 13:32
    2009年11月4日 13:14

すべての返信

  • PrintDialog.UseEXDialog プロパティをtrueにするそうです。
    AMD64 マイクロプロセッサの場合、PrintDialog クラスは、UseEXDialog プロパティを true に設定しないと動作しない可能性があります。
    • 回答としてマーク まに 2009年11月4日 13:28
    • 回答としてマークされていない まに 2009年11月4日 13:28
    • 回答としてマーク まに 2009年11月4日 13:32
    2009年11月4日 13:14
  • UseEXDialogをtrueにしてみたところ、無事表示することができました!!
    どうもありがとうございました。

    ちなみにプロセッサはIntel系なんですけどねぇ。
    また、UseEXDialogのヘルプには既定値がtrueって書いてありましたが、実際に動作させてみたら、最初はfalseになってました。

    なんだかよく分かりませんが、とりあえず解決したのでOKです。

    2009年11月4日 13:32
  • 「AMD64 マイクロプロセッサの場合」というのは「64bit環境の場合」と読み替えてあげましょう。
    このようなPrintDialogがCPUメーカーに依存しているとは考えられませんので。
    2009年11月4日 22:33