64bit環境で Windows Forms の PrintDialog が表示されないという問題に遭遇しました。
結論から言えば .NET Framework 4.0 で修正されていました。
テストコード
using System; using System.Windows.Forms; class Test { [STAThread] static void Main() { Application.EnableVisualStyles(); var f = new Form(); var b = new Button { Text = "Test" }; b.Click += (sender, e) => { using (var d = new PrintDialog()) { //d.UseEXDialog = true; d.ShowDialog(f); } }; f.Controls.Add(b); Application.Run(f); } }
これを .NET Framework 3.5 で AnyCPU でビルドすると64bit環境でダイアログが表示されませんが、x86 でビルドすれば表示されました。UseEXDialog
のコメントを戻して有効にすれば AnyCPU でも表示されました。
.NET Framework 4.0 では AnyCPU で UseEXDialog
をコメントアウトしたままでも表示されました。どうやらバグとして修正されたようです。
UseEXDialog
UseEXDialog
の指定での見た目の変化を貼ります。true
の方が少し新しい感じがするので、バグに関係なく指定した方が良さそうです。
true
false