Vb.net 在表中打印dataGridView(vb2010)

Vb.net 在表中打印dataGridView(vb2010),vb.net,Vb.net,我是vb编程新手。我正在使用vb2010,我正在做一个数据库应用程序。它很好用。但我必须添加另一项任务。即以表格形式打印DGV上的数据。我对此做了很多研究,但还没有发现。任何帮助或回应都将不胜感激 对不起,这是我的代码:它可以工作,但只打印一个黑色文档 Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\IT-PC\Documents\Visual Studio 2010\Proj

我是vb编程新手。我正在使用vb2010,我正在做一个数据库应用程序。它很好用。但我必须添加另一项任务。即以表格形式打印DGV上的数据。我对此做了很多研究,但还没有发现。任何帮助或回应都将不胜感激


对不起,这是我的代码:它可以工作,但只打印一个黑色文档

Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\IT-PC\Documents\Visual Studio 2010\Projects\MaterialSectionIS\MaterialSectionIS\My Project\materialsInventory.accdb"

    Dim MyPrintDocument As PrintDocument = New PrintDocument
    Dim MyDataGridViewPrinter As DataGridViewPrinter
    Dim MyPrintDialog As PrintDialog = New PrintDialog()

    MyPrintDialog.AllowCurrentPage = False
    MyPrintDialog.AllowPrintToFile = False
    MyPrintDialog.AllowSelection = False
    MyPrintDialog.AllowSomePages = True
    MyPrintDialog.PrintToFile = False
    MyPrintDialog.ShowHelp = False
    MyPrintDialog.ShowNetwork = False
    'Dim commdata As New OleDb.OleDbCommand("SELECT * FROM metal WHERE itemCodeM = @tbItemCodeMetal", myConnection)
    Dim MyConn As OleDbConnection
    Dim da As OleDbDataAdapter
    Dim ds As DataSet
    Dim tables As DataTableCollection
    Dim source1 As New BindingSource

    MyConn = New OleDbConnection
    MyConn.ConnectionString = connString
    ds = New DataSet
    tables = ds.Tables
    da = New OleDbDataAdapter("Select * from [metal]", MyConn)
    da.Fill(ds, "metal")
    Dim view As New DataView(tables(0))
    source1.DataSource = view
    DataGridView1.DataSource = view
    If MyPrintDialog.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then Return False

    MyPrintDocument.DocumentName = "metal"
    MyPrintDocument.PrinterSettings = MyPrintDialog.PrinterSettings
    MyPrintDocument.DefaultPageSettings = MyPrintDialog.PrinterSettings.DefaultPageSettings
    MyPrintDocument.DefaultPageSettings.Margins = New Margins(40, 40, 40, 40)

    If MessageBox.Show("Do you want the report to be centered on the page", "METAL - Center on Page", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
        MyDataGridViewPrinter = New DataGridViewPrinter(DataGridView1, MyPrintDocument, True, True, "metal", New Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Black, True)
    Else
        MyDataGridViewPrinter = New DataGridViewPrinter(DataGridView1, MyPrintDocument, False, True, "metal", New Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Black, True)
    End If

    Return True
End Function


Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim more As Boolean

    Try
        more = MyDataGridViewPrinter.DrawDataGridView(e.Graphics)
        If more Then e.HasMorePages = True
    Catch Ex As Exception
        MessageBox.Show(Ex.Message & vbCrLf & Ex.StackTrace, MyConstants.CaptionFehler, MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim MyPrintDocument As PrintDocument = New PrintDocument

    If SetupThePrinting() Then
        Dim MyPrintPreviewDialog As PrintPreviewDialog = New PrintPreviewDialog()
        MyPrintPreviewDialog.Document = MyPrintDocument
        MyPrintPreviewDialog.ShowDialog()
    End If
End Sub





Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim MyPrintDocument As PrintDocument = New PrintDocument
    If SetupThePrinting() Then MyPrintDocument.Print()
End Sub
Dim connString As String=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\Users\IT-PC\Documents\visualstudio 2010\Projects\materialsections\materialsections\My Project\materialinventory.accdb”
将MyPrintDocument设置为PrintDocument=新的PrintDocument
将MyDataGridViewPrinter设置为DataGridViewPrinter
将MyPrintDialog设置为PrintDialog=新建PrintDialog()
MyPrintDialog.AllowCurrentPage=False
MyPrintDialog.AllowPrintToFile=False
MyPrintDialog.AllowSelection=False
MyPrintDialog.AllowSomePages=True
MyPrintDialog.PrintToFile=False
MyPrintDialog.ShowHelp=False
MyPrintDialog.ShowNetwork=False
'Dim commdata As New OleDb.OleDbCommand(“选择*FROM metal,其中itemCodeM=@tbItemCodeMetal”,myConnection)
Dim MyConn作为OLEDB连接
将da调暗为OLEDB数据适配器
Dim ds作为数据集
将表设置为DataTableCollection
Dim source1作为新的BindingSource
MyConn=新的OLEDB连接
MyConn.ConnectionString=connString
ds=新数据集
tables=ds.tables
da=新的OleDbDataAdapter(“从[金属]中选择*”,MyConn)
da.填料(ds,“金属”)
作为新数据视图的Dim视图(表(0))
source1.DataSource=view
DataGridView1.DataSource=view
如果MyPrintDialog.ShowDialog()System.Windows.Forms.DialogResult.OK,则返回False
MyPrintDocument.DocumentName=“金属”
MyPrintDocument.PrinterSettings=MyPrintDialog.PrinterSettings
MyPrintDocument.DefaultPageSettings=MyPrintDialog.PrinterSettings.DefaultPageSettings
MyPrintDocument.DefaultPageSettings.Margins=新页边距(40,40,40,40)
如果MessageBox.Show(“您希望报告在页面上居中吗”,“金属-在页面上居中”,MessageBoxButtons.YesNo,MessageBoxIcon.Question)=DialogResult.Yes然后
MyDataGridViewPrinter=新DataGridViewPrinter(DataGridView1,MyPrintDocument,True,True,“金属”,新字体(“Tahoma”,18,FontStyle.Bold,GraphicsUnit.Point),Color.Black,True)
其他的
MyDataGridViewPrinter=新DataGridViewPrinter(DataGridView1,MyPrintDocument,False,True,“metal”,新字体(“Tahoma”,18,FontStyle.Bold,GraphicsUnit.Point),Color.Black,True)
如果结束
返回真值
端函数
私有子PrintDocument1u PrintPage(ByVal sender作为System.Object,ByVal e作为System.Drawing.Printing.PrintPageEventArgs)处理PrintDocument1.PrintPage
模糊更像布尔值
尝试
more=MyDataGridViewPrinter.DrawDataGridView(e.Graphics)
如果超过e.HasMorePages=真
特例
MessageBox.Show(例如Message&vbCrLf&Ex.StackTrace、MyConstants.CaptionFehler、MessageBoxButtons.OK、MessageBoxIcon.Error)
结束尝试
端接头
私有子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
将MyPrintDocument设置为PrintDocument=新的PrintDocument
如果设置打印(),则
将MyPrintPreviewDialog设置为PrintPreviewDialog=新建PrintPreviewDialog()
MyPrintPreviewDialog.Document=MyPrintDocument
MyPrintPreviewDialog.ShowDialog()
如果结束
端接头
私有子按钮2\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮2。单击
将MyPrintDocument设置为PrintDocument=新的PrintDocument
如果设置Printing(),则设置MyPrintDocument.Print()
端接头

当您编写打印时-您是否想过在纸上打印(使用打印机)?或者如何将值从datagridview传递到表(假定为datatable)或。。。?给我们看一些代码,你到目前为止做了什么。您的问题非常不清楚。请查看此链接。请注意,原始代码用于
DataGrid
控件,但线程中稍后的代码相当于
DataGridView
。单键打印将很困难。我只是让我的用户全选、复制并粘贴到Excel/Word表格中。对不起,这是我的代码:它可以工作,但只打印一个黑色文档。