PDA

View Full Version : مبتدی: فراخواني رويداد PrintPage كنترل PrintDocument



mgh64120
شنبه 10 دی 1390, 22: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

ممنون از توجهتون.
موفق باشيد...

mgh64120
سه شنبه 13 دی 1390, 00:19 صبح
سلام دوستان
فكر كنم كسي متوجه منظورم نشد!سوال رو يه جور ديكه مطرح مي كنم.
اگر من بخوام بعد از لود شدن فرم، متني كه ميخوام چاپ شه رو عوض كنم و اين تغييرات ابتدا در PrintDocument و سپس در PrintPreviewControl اعمال بشه،
چكار بايد كرد؟؟؟؟؟؟؟؟؟ :متفکر: :ناراحت: :گریه:
متشكرم!

alimanam
سه شنبه 13 دی 1390, 18:31 عصر
با سلام


اگر من بخوام بعد از لود شدن فرم، متني كه ميخوام چاپ شه رو عوض كنم و اين تغييرات ابتدا در PrintDocument و سپس در PrintPreviewControl اعمال بشه،
چكار بايد كرد؟؟؟؟؟؟؟؟؟واستون یک سورس نوشتم که این کار رو انجام میده .

80115

موفق باشید ./

ali190
سه شنبه 13 دی 1390, 20:37 عصر
سلام علی جان
رمزش چی هست؟

mgh64120
شنبه 17 دی 1390, 22:01 عصر
سلام خدمت شما دوست عزيز alimanam
با كمال تشكر از شما براي زحماتي كه برام كشيديد، يه سوال برام پيش اومده.
اگر در پروژه اي كه گذاشتيد، چند بارپشت سر هم روي كليد نمايش كليك كنيد، كم كم دور عكس و نوشته ها يه سايه سياه ايجاد ميشه.
چرا؟ مگر نه اينكه هر بار PrintDocument و PrintPreviewControl حذف و دوباره ايجاد ميشه؟
متشكرم. بدرود.

alimanam
شنبه 17 دی 1390, 22:20 عصر
با سلام

کد رو اینجوری تغییر بده درست میشه .

موفق باشید ./

mgh64120
جمعه 23 دی 1390, 11:15 صبح
سلام بردوستان
اندازه كاغذ رو در PrintDocument تغيير ميدم و در PrintPreviewControl نيز اون رو درست نمايش ميده.

PrintDocument1.DefaultPageSettings.PaperSize = New PaperSize("New", 50, 75)
اما وقتي سند رو چاپ ميگريم(با پرينترليزري)، موقعيت اشكال بر اساس كاغذ A4 هست.
نمونه سند چاپي من از كاغذ هم در پهنا و ارتفاع كوچكتر از كاغذ A4 هست.
راه حل چيه؟
متشكرم.
بدرود.

alimanam
جمعه 23 دی 1390, 13:22 عصر
با سلام


اما وقتي سند رو چاپ ميگريم(با پرينترليزري)، موقعيت اشكال بر اساس كاغذ A4 هست. نمونه سند چاپي من از كاغذ هم در پهنا و ارتفاع كوچكتر از كاغذ A4 هست.من بدون مشکل پرینت میگیرم مشکلی نداره ( البته با پرینتر مجازی ) فکر کنم باید روی یک پرینتر دیگه تست کنین بعد با همدیگه مقایسه کنین ببینین چطور میشه .

http://up9.iranblog.com/images/56vlqjqioqj3rolfb8qd.jpg

موفق باشید./

sh2007
جمعه 23 دی 1390, 19:04 عصر
با سلام
واستون یک سورس نوشتم که این کار رو انجام میده .

80115

موفق باشید ./
فایلتون رمز داشت

mgh64120
شنبه 15 بهمن 1390, 19:20 عصر
سلام جناب alimanam و بقيه دوستان
من ميخوام از شي PrintDocument به تعداد دلخواه چاپ بگيرم.
آيا به غير از حلقه راه ديگري نداره؟؟؟:متفکر:

For I As Integer = 1 To تعداد چاپ مورد نظر
PrintDoc.Print()
Next I

با تشكر از دوستان :لبخندساده:
بدورد.

amir.net
جمعه 26 اسفند 1390, 22:52 عصر
رمزش چيه ؟؟؟؟؟؟؟؟؟:عصبانی++:

جالبه اينا تشكر كردن !!!:متعجب:

zeos_man
شنبه 27 اسفند 1390, 00:05 صبح
من قبلا دانلود کرده بودم البته از استاد رمزش رو گرفته بودم برات میزارم . تشکر یادت نرههههههههههههههههههههههه هههههههه :کف:

nowar1352
دوشنبه 26 تیر 1391, 14:14 عصر
آقا جون سر كاريم اين فايل ها كه پسورد داره ؟