السلام عليكم.
حبيت اشاركم في مشكلة واجهتني عند طلب زبون لي خيار
طباعة datagridview في برنامج كنت قد أعددته له بواسطة
vb.net بإستخدام Visual Studio 2010 , وحلها.
المشكلة هيا ان البرنامج ومعلومات ال
datagridview بالعربية
أي يجب الطبعة من اليمين
~اولا~
نحمل من هنا
DataGridViewPrinter.cs
أو عبر المرفقات.
ونفك الضغط (لنفترض فكناه في :c)
~ثانيا~
نبحث عن الملف: csc.exe وهو compiler لل #C.
الملف موجود عندي في:
كود:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
~ثالثا~
نفتح command prompt أو cmd
ونحدد مسار csc.exe
كود:
cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
~رابعا~
نكتب الأمر التالي:
كود:
csc /t:library /out:C:/DataGridViewPrinter.dll C:\DataGridViewPrinter.cs
هذا الامر يعمل compile ل DataGridViewPrinter.cs into DataGridViewPrinter.dll
~خامسا~
في VisualStudio نضع مرجع كالاتى:
كود:
Right-Click on your Project Name-> Add Reference -> Browse -> c:\DatagridViewerPrinter.dll
تمام. تقريبا خلصنا :lol:
للتجربة:
-وضع form جديد
-وضع زيرين "Buttons"
-وضع DataGridView
-وضع برينتدكومنت (اسف هناك رقابة على كلمة دكومنت فالمنتدى)
نضع في خصائص ال
datagridview
RightToLeft = True
وفالكود (بعد برمجة كيفية تعبأة ال
datagridview أكيد) نضع الكود التالي:
(ايبدل ******** بـكلمة دكومنت بالإنجليزية)
كود:
Public Class Form1
'Create DataGridViewPrinter type variable
Dim MyDataGridViewPrinter As DataGridViewPrinter
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If SetupThePrinting() Then
Print********1.Print()
End If
End Sub
'The PrintPage action for the Print******** control
Private Sub Print********1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Print********1.PrintPage
Dim more As Boolean = MyDataGridViewPrinter.DrawDataGridView(e.Graphics)
If more = True Then
e.HasMorePages = True
End If
End Sub
'The PrintView button
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If SetupThePrinting() Then
Dim MyPrintPreviewDialog As PrintPreviewDialog = New PrintPreviewDialog()
MyPrintPreviewDialog.******** = Print********1
MyPrintPreviewDialog.ShowDialog()
End If
End Sub
Private Function SetupThePrinting() As Boolean
Dim MyPrintDialog As PrintDialog = New PrintDialog()
MyPrintDialog.AllowCurrentPage = False
MyPrintDialog.AllowPrintToFile = False
MyPrintDialog.AllowSelection = False
MyPrintDialog.AllowSomePages = False
MyPrintDialog.PrintToFile = False
MyPrintDialog.ShowHelp = False
MyPrintDialog.ShowNetwork = False
If MyPrintDialog.ShowDialog() <> DialogResult.OK Then
Return False
End If
Print********1.********Name = "Customers Report"
Print********1.PrinterSettings = MyPrintDialog.PrinterSettings
Print********1.DefaultPageSettings = MyPrintDialog.PrinterSettings.DefaultPageSettings
Print********1.DefaultPageSettings.Margins = New Margins(40, 40, 40, 40)
If MessageBox.Show("Do you want the report to be centered on the page", "InvoiceManager - Center on Page", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
MyDataGridViewPrinter = New DataGridViewPrinter(DataGridView1, Print********1, True, True, "Customers", New Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Black, True)
Else
MyDataGridViewPrinter = New DataGridViewPrinter(DataGridView1, Print********1, False, True, "Customers", New Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Black, True)
End If
Return True
End Function
//إنتهى
كود:
Tested on
Windows 7 x32
VisualStudio 2010 Ultimate
Microsoft.NET Framework 4 Client Profile 4.0.30319.1 Final
المرجع:
هنا
والسلام عليكم ورحمة الله وبركاته
اخوكم في الله: SpookWEB
Sp00kY
'fhum DataGridView lk hgdldk VB>NET datagridview print vb>net