PrintPreviewDialog のツールバーの印刷ボタンでプリンタ選択を可能にする |
|

|
Private prtDialog As PrintDialog = Nothing
' ******************************************************
' 印刷プレビューの初期処理
' ******************************************************
Private Sub preview_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles preview.Load
' ツールバーの作り直し
' 現在の印刷アイコンを取得
Dim tool As ToolStrip = PrintPreviewDialog1.Controls(1)
Dim img As System.Drawing.Image = tool.Items(0).Image
' 新しいツールバー用ボタンを作成
Dim ToolStripButton1 As New System.Windows.Forms.ToolStripButton()
ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
' 取得したイメージをセット
ToolStripButton1.Image = tool.Items(0).Image
' デザイナのコードをそのまま使っています
ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
ToolStripButton1.Name = "ToolStripButton1"
ToolStripButton1.Size = New System.Drawing.Size(23, 22)
ToolStripButton1.Text = "ToolStripButton1"
' 現在の印刷ボタンを削除
tool.Items.RemoveAt(0)
' 新しい印刷ボタンを追加
tool.Items.Insert(0, ToolStripButton1)
' ボタンにイベント登録
AddHandler ToolStripButton1.Click, AddressOf print_start
End Sub
' ******************************************************
' 印刷ボタンの処理
' ******************************************************
Private Sub print_start(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles preview.Load
' 作成された時に呼ばれるのでキャンセル
If prtDialog Is Nothing Then
prtDialog = New PrintDialog()
prtDialog.PrinterSettings = New PrinterSettings()
prtDialog.Document = pd
Else
If prtDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
pd.Print()
End If
End If
End Sub
' ******************************************************
' 印刷プレビューダイアログが閉じられた時
' ******************************************************
Private Sub preview_FormClosed(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles preview.FormClosed
prtDialog.Dispose()
prtDialog = Nothing
End Sub
| |
|
|
簡単な古いコード( 現在の印刷ボタンを削除してツールバーの最後に追加する ) |
|
|
Private print_toolbar_flg As Boolean = False
Private print_click As New System.EventHandler(AddressOf print_start)
Private print_click_flg As Boolean = False
' ******************************************************
' 印刷プレビューの初期処理
' ******************************************************
Private Sub preview_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles preview.Load
' デスクトップ左上
preview.DesktopLocation = New System.Drawing.Point(0, 0)
' 初回のみ、ツールバーの作り直し
If Not print_toolbar_flg Then
print_toolbar_flg = True
Dim tool As ToolStrip = preview.Controls(1)
Dim img As System.Drawing.Image = tool.Items(0).Image
tool.Items.RemoveAt(0)
tool.Items.Add("", img, print_click)
End If
End Sub
' ******************************************************
' 印刷ボタンの処理
' ******************************************************
Private Sub print_start(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles preview.Load
' 作成された時に呼ばれるのでキャンセル
If Not print_click_flg Then
print_click_flg = True
Else
Dim prtDialog As New PrintDialog
prtDialog.PrinterSettings = New PrinterSettings()
prtDialog.Document = pd
If prtDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
pd.Print()
End If
End If
End Sub
' ******************************************************
' 印刷プレビューダイアログが閉じられた時
' ******************************************************
Private Sub preview_FormClosed(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles preview.FormClosed
print_click_flg = False
End Sub
| |
|
|
|