|
■No35790 (ぽぴ王子 さん) に返信
ありがとうございます。
何とかDataGridView全体の値を印刷することができました。
とりあえず、最終的に出来上がったソースを載せておきます。
Private WithEvents PrintDocument1 As New System.Drawing.Printing.PrintDocument()
Private Sub Print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Print.Click
'file()
' 印刷処理を実行
'PrintDocument1.Print()
'PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.FullWindow)
'PrintDocumentオブジェクトの作成
Dim pd As New System.Drawing.Printing.PrintDocument
'PrintPageイベントハンドラの追加
AddHandler pd.PrintPage, AddressOf pd_PrintPage
'PrintDialogクラスの作成
Dim pdlg As New PrintDialog
'PrintDocumentを指定
pdlg.Document = pd
'印刷の選択ダイアログを表示する
If pdlg.ShowDialog() = DialogResult.OK Then
'OKがクリックされた時は印刷する
pd.Print()
End If
End Sub
Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim g As Graphics = e.Graphics
'文字列を描く
'g.DrawString(DataGridView1(0, 0).Value, _
' New Font("MS Pゴシック", 12), Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top)
Dim X As Integer
Dim Y As Integer
Y = e.MarginBounds.Top
For i As Integer = 0 To DataGridView1.Rows.Count - 1
X = e.MarginBounds.Left
For j As Integer = 0 To DataGridView1.Columns.Count - 1
Dim s As String
If DataGridView1(j, i).Value Is Nothing Then
s = ""
Else
s = DataGridView1(j, i).Value
End If
g.DrawString(s, New Font("MS Pゴシック", 9), Brushes.Black, X, Y)
'g.DrawString(DataGridView1(j, i).Value.ToString, _
' New Font("MS Pゴシック", 12), Brushes.Black, X, Y)
X += DataGridView1.Columns(j).Width
Next j
Y += DataGridView1.Rows(i).Height
Next i
'このページで終了
e.HasMorePages = False
End Sub
RowとColumnを同時に移動させるという書き方が分からなかったのですが、
今回の件で新しい知識も得ることが出来ましたのでよかったです。
|