mgh64120
شنبه 10 دی 1390, 23:56 عصر
سلام دوستان
من در فرمم از يك PrintDocument براي تنظيم چاپ و براي پيش نمايش از PrintPreviewControl استفاده كردم.
وقتي فرم لود ميشه رويداد PrintPage رخ داده و دستوراتي كه در اين رويداد هست اجرا شده و سپس در كنترل PrintPreviewControl نمايش داده ميشه. حالا من ميخوام با انتخاب يك گزينه ديگر از كامبوباكس cboAlign ،دوباره PrintDocument بازسازي(Refresh) شود و نتيجه در PrintPreviewControl تغيير كند.
آيا بايد براي اينكار رويداد PrintPage رو فراخواني كنم يا نه؟
Private Sub frmPAsnad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With PrintDocument1.DefaultPageSettings
.Margins.Left = 0
.Margins.Top = 0
.Landscape = True
.PaperSize = New PaperSize("New", 100, 200)
End With
PrintPreviewControl.Document = PrintDocument1
End Sub
Public Sub ShowLineAndAlignment(ByVal e As System.Drawing.Printing.PrintPageEventArgs, ByVal Align As StringAlignment)
'
Dim displayRectangle As New Rectangle(New Point(10, 5), New Size(75, 10))
'
Dim format1 As New StringFormat(StringFormatFlags.NoClip)
'
format1.LineAlignment = StringAlignment.Center
format1.Alignment = Align
'
e.Graphics.DrawRectangle(Pens.Wheat, displayRectangle)
e.Graphics.DrawString("Welcome To Barnamenevis.org", Me.Font, Brushes.Green, _
RectangleF.op_Implicit(displayRectangle), format1)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Select Case cboAlign.SelectedIndex
Case 0
ShowLineAndAlignment(e, StringAlignment.Near
Case 1
ShowLineAndAlignment(e, StringAlignment.Center)
Case 2
ShowLineAndAlignment(e, StringAlignment.Far)
End Select
End Sub
Private Sub cboAlign_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboAlign.SelectedIndexChanged
PrintDocument1_PrintPage(???????????)
End Sub
ممنون از توجهتون.
موفق باشيد...
من در فرمم از يك PrintDocument براي تنظيم چاپ و براي پيش نمايش از PrintPreviewControl استفاده كردم.
وقتي فرم لود ميشه رويداد PrintPage رخ داده و دستوراتي كه در اين رويداد هست اجرا شده و سپس در كنترل PrintPreviewControl نمايش داده ميشه. حالا من ميخوام با انتخاب يك گزينه ديگر از كامبوباكس cboAlign ،دوباره PrintDocument بازسازي(Refresh) شود و نتيجه در PrintPreviewControl تغيير كند.
آيا بايد براي اينكار رويداد PrintPage رو فراخواني كنم يا نه؟
Private Sub frmPAsnad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With PrintDocument1.DefaultPageSettings
.Margins.Left = 0
.Margins.Top = 0
.Landscape = True
.PaperSize = New PaperSize("New", 100, 200)
End With
PrintPreviewControl.Document = PrintDocument1
End Sub
Public Sub ShowLineAndAlignment(ByVal e As System.Drawing.Printing.PrintPageEventArgs, ByVal Align As StringAlignment)
'
Dim displayRectangle As New Rectangle(New Point(10, 5), New Size(75, 10))
'
Dim format1 As New StringFormat(StringFormatFlags.NoClip)
'
format1.LineAlignment = StringAlignment.Center
format1.Alignment = Align
'
e.Graphics.DrawRectangle(Pens.Wheat, displayRectangle)
e.Graphics.DrawString("Welcome To Barnamenevis.org", Me.Font, Brushes.Green, _
RectangleF.op_Implicit(displayRectangle), format1)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Select Case cboAlign.SelectedIndex
Case 0
ShowLineAndAlignment(e, StringAlignment.Near
Case 1
ShowLineAndAlignment(e, StringAlignment.Center)
Case 2
ShowLineAndAlignment(e, StringAlignment.Far)
End Select
End Sub
Private Sub cboAlign_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboAlign.SelectedIndexChanged
PrintDocument1_PrintPage(???????????)
End Sub
ممنون از توجهتون.
موفق باشيد...