実現したいこと
印刷時に印刷プレビューとプリンタ選択ダイアログを表示したい
前提
印刷機能を実装しているのですが、印刷プレビュー画面は表示できたのですが、プリンタ選択ダイアログが表示できません。
発生している問題・エラーメッセージ
印刷プレビュー画面は表示できているのですが、プリンタ選択ダイアログ画面が表示できません。
該当のソースコード
VB.NET
1Private Sub cmdOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOK.Click 2 Call PrintData() 3End Sub 4 5Private Sub PrintData() 6 7 Me.PrintResult = New clsPrintResult(SysInf, WDst, Me) 8 9 If WDst.Tables(0).Select().Length < 1 Then 10 MsgBox("該当するデータがありません。") 11 Exit Sub 12 Else 13 '印刷向き 14 PrintDocument2.DefaultPageSettings.Landscape = True 15 16 'プレビュー有無 17 If Me.chk印刷プレビュー.Checked = True Then 18 19 Me.PrintResult.pblnIsNowShowPreview = True 20 21 ' ツールバーの作り直し 22 ' 現在の印刷アイコンを取得 23 Dim tool As ToolStrip = PrintPreviewDialog1.Controls(1) 24 Dim img As System.Drawing.Image = tool.Items(0).Image 25 26 ' 新しいツールバー用ボタンを作成 27 Dim ToolStripButton1 As New System.Windows.Forms.ToolStripButton() 28 ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image 29 ' 取得したイメージをセット 30 ToolStripButton1.Image = tool.Items(0).Image 31 ' デザイナのコードをそのまま使っています 32 ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta 33 ToolStripButton1.Name = "ToolStripButton1" 34 ToolStripButton1.Text = "ToolStripButton1" 35 ' 現在の印刷ボタンを削除 36 tool.Items.RemoveAt(0) 37 ' 新しい印刷ボタンを追加 38 tool.Items.Insert(0, ToolStripButton1) 39 ' ボタンにイベント登録 40 AddHandler ToolStripButton1.Click, AddressOf print_start 41 42 PrintPreviewDialog1.Document = PrintDocument2 43 PrintPreviewDialog1.WindowState = Windows.Forms.FormWindowState.Normal 44 PrintPreviewDialog1.StartPosition = FormStartPosition.CenterScreen 45 PrintPreviewDialog1.ShowDialog() 46 47 Else 48 49 Me.PrintResult_IPET.pblnIsNowShowPreview = False 50 51 '2010.08.17 add begin 52 Dim result As DialogResult = DialogResult.OK 53 '印刷ダイアログ設定 54 Me.PrintDialog1.PrinterSettings = New Printing.PrinterSettings() 55 '印刷文書指定 56 Me.PrintDialog1.Document = Me.PrintDocument2 57 58 ' [ファイルへ出力] 非表示 59 Me.PrintDialog1.AllowPrintToFile = False 60 'ファイルへ出力オフ 61 Me.PrintDialog1.PrintToFile = False 62 ' [部単位で印刷] 非表示 63 Me.PrintDialog1.PrinterSettings.Collate = False 64 '部数不要 65 Me.PrintDialog1.PrinterSettings.Copies = False 66 ' [ページ指定] にする 67 Me.PrintDialog1.PrinterSettings.PrintRange = System.Drawing.Printing.PrintRange.AllPages 68 'ページ指定可能 69 Me.PrintDialog1.AllowSomePages = True 70 ''選択した部分要 71 'Me.PrintDialog1.AllowSelection = False 72 ''ヘルプ不要 73 'Me.PrintDialog1.ShowHelp = False 74 ''ネットワーク不要 75 'Me.PrintDialog1.ShowNetwork = False 76 '開始ページ 77 Me.PrintDialog1.PrinterSettings.FromPage = 1 78 '終了ページ 79 Me.PrintDialog1.PrinterSettings.ToPage = 1 80 '最小ページ 81 Me.PrintDialog1.PrinterSettings.MinimumPage = 1 82 '最大ページ 83 Me.PrintDialog1.PrinterSettings.MaximumPage = Short.MaxValue 84 85 Do 86 '印刷ダイアログ表示 87 result = Me.PrintDialog1.ShowDialog 88 89 '結果確認がOKでない時 90 If result <> DialogResult.OK Then 91 Me.Refresh() 92 '終了 93 Exit Sub 94 End If 95 StartPage = Me.PrintDialog1.PrinterSettings.FromPage 96 CurrentPage = Me.PrintDialog1.PrinterSettings.FromPage 97 EndPage = Me.PrintDialog1.PrinterSettings.ToPage 98 Dim a As Integer 99 If Me.PrintDialog1.PrinterSettings.PrintRange = Drawing.Printing.PrintRange.SomePages Then 100 PrintSomePagesFlag = True 101 If StartPage > EndPage Or StartPage = 0 Or EndPage = 0 Then 102 MsgBox("印刷範囲が適切ではありません。", MsgBoxStyle.Exclamation) 103 Me.Refresh() 104 Else 105 Exit Do 106 End If 107 Else 108 PrintSomePagesFlag = False 109 Exit Do 110 End If 111 Loop 112 113 Me.Refresh() 114 115 PrintDocument2.Print() 116 117 Me.PrintDialog1.Dispose() 118 119 End If 120 121 End If 122 123 End Sub 124
補足情報(FW/ツールのバージョンなど)
Windows7
Microsoft Visual Studio 2008

0 コメント