Vb.net 如何从“打印预览”对话框中删除时间?
这是我的密码:Vb.net 如何从“打印预览”对话框中删除时间?,vb.net,printing,datagrid,print-preview,Vb.net,Printing,Datagrid,Print Preview,这是我的密码: Imports System.Data.OleDb Imports System.Drawing.Printing Namespace Print Public Class Form1 Inherits System.Windows.Forms.Form Dim PrintC As PrinterClass Dim conn As OleDb.OleDbConnection Dim connectionString As String = "
Imports System.Data.OleDb
Imports System.Drawing.Printing
Namespace Print
Public Class Form1
Inherits System.Windows.Forms.Form
Dim PrintC As PrinterClass
Dim conn As OleDb.OleDbConnection
Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\db1.mdb"
Dim sql As String = String.Empty
Dim ds As DataSet
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FillDataGrid()
'//create printerclass object
PrintC = New PrinterClass(PrintDocument1, dataGrid)
End Sub
Private Sub FillDataGrid()
Try
Dim dt As New DataTable
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim da As New OleDbDataAdapter
con.Open()
da = New OleDbDataAdapter("SELECT * from klient ", con)
da.Fill(dt)
con.Close()
dataGrid.DataSource = dt.DefaultView
Dim dTable As DataTable
For Each dTable In ds.Tables
Dim dgStyle As DataGridTableStyle = New DataGridTableStyle
dgStyle.MappingName = dTable.TableName
dataGrid.TableStyles.Add(dgStyle)
Next
' DataGrid settings
dataGrid.CaptionText = "TE GJITHE KLIENTET"
dataGrid.HeaderFont = New Font("Verdana", 12)
dataGrid.TableStyles(0).GridColumnStyles(0).Width = 60
dataGrid.TableStyles(0).GridColumnStyles(1).Width = 140
dataGrid.TableStyles(0).GridColumnStyles(2).Width = 140
dataGrid.TableStyles(0).GridColumnStyles(3).Width = 140
dataGrid.TableStyles(0).GridColumnStyles(4).Width = 140
dataGrid.TableStyles(0).GridColumnStyles(5).HeaderText = ""
dataGrid.TableStyles(0).GridColumnStyles(5).Width = -1
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
'create printerclass object
PrintC = New PrinterClass(PrintDocument1, dataGrid)
PrintDocument1.Print()
End Sub
Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click
'create printerclass object
PrintC = New PrinterClass(PrintDocument1, dataGrid)
''preview
Dim ps As New PaperSize("A4", 840, 1150)
ps.PaperName = PaperKind.A4
PrintDocument1.DefaultPageSettings.PaperSize = ps
PrintPreviewDialog1.WindowState = FormWindowState.Normal
PrintPreviewDialog1.StartPosition = FormStartPosition.CenterScreen
PrintPreviewDialog1.ClientSize = New Size(600, 600)
PrintPreviewDialog1.ShowDialog()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'print grid
Dim morepages As Boolean = PrintC.Print(e.Graphics)
If (morepages) Then
e.HasMorePages = True
End If
End Sub
End Class
End Namespace
这就是数据网格中数据的外观(太完美了)
下面是我单击PrintPreview时的外观。(我不希望时间出现在那里,“12:00:00”部分。在数据库中,日期存储为短日期(12年12月10日)
有人能提出一个解决这个问题的办法吗
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Collections
Imports System.Data
Namespace Print
Public Class PrinterClass
'//clone of Datagrid
Dim PrintGrid As Grid
'//printdocument for initial printer settings
Private PrintDoc As PrintDocument
'//defines whether the grid is ordered right to left
Private bRightToLeft As Boolean
'//Current Top
Private CurrentY As Single = 0
'//Current Left
Private CurrentX As Single = 0
'//CurrentRow to print
Private CurrentRow As Integer = 0
'//Page Counter
Public PageCounter As Integer = 0
'/// <summary>
'/// Constructor Class
'/// </summary>
'/// <param name="pdocument"></param>
'/// <param name="dgrid"></param>
Public Sub New(ByVal pdocument As PrintDocument, ByVal dgrid As DataGrid)
'MyBase.new()
PrintGrid = New Grid(dgrid)
PrintDoc = pdocument
'//The grid columns are right to left
bRightToLeft = dgrid.RightToLeft = RightToLeft.Yes
'//init CurrentX and CurrentY
CurrentY = pdocument.DefaultPageSettings.Margins.Top
CurrentX = pdocument.DefaultPageSettings.Margins.Left
End Sub
Public Function Print(ByVal g As Graphics, ByRef currentX As Single, ByRef currentY As Single) As Boolean
'//use predefined area
currentX = currentX
currentY = currentY
PrintHeaders(g)
Dim Morepages As Boolean = PrintDataGrid(g)
currentY = currentY
currentX = currentX
Return Morepages
End Function
Public Function Print(ByVal g As Graphics) As Boolean
CurrentX = PrintDoc.DefaultPageSettings.Margins.Left
CurrentY = PrintDoc.DefaultPageSettings.Margins.Top
PrintHeaders(g)
Return PrintDataGrid(g)
End Function
'/// <summary>
'/// Print the Grid Headers
'/// </summary>
'/// <param name="g"></param>
Private Sub PrintHeaders(ByVal g As Graphics)
Dim sf As StringFormat = New StringFormat
'//if we want to print the grid right to left
If (bRightToLeft) Then
CurrentX = PrintDoc.DefaultPageSettings.PaperSize.Width - PrintDoc.DefaultPageSettings.Margins.Right
sf.FormatFlags = StringFormatFlags.DirectionRightToLeft
Else
CurrentX = PrintDoc.DefaultPageSettings.Margins.Left
End If
Dim i As Integer
For i = 0 To PrintGrid.Columns - 1
'//set header alignment
Select Case (CType(PrintGrid.Headers.GetValue(i), Header).Alignment)
Case HorizontalAlignment.Left 'left
sf.Alignment = StringAlignment.Near
Case HorizontalAlignment.Center
sf.Alignment = StringAlignment.Center
Case HorizontalAlignment.Right
sf.Alignment = StringAlignment.Far
End Select
'//advance X according to order
If (bRightToLeft) Then
'//draw the cell bounds (lines) and back color
g.FillRectangle(New SolidBrush(PrintGrid.HeaderBackColor), CurrentX - PrintGrid.Headers(i).Width, CurrentY, PrintGrid.Headers(i).Width, PrintGrid.Headers(i).Height)
g.DrawRectangle(New Pen(PrintGrid.LineColor), CurrentX - PrintGrid.Headers(i).Width, CurrentY, PrintGrid.Headers(i).Width, PrintGrid.Headers(i).Height)
'//draw the cell text
g.DrawString(PrintGrid.Headers(i).CText, PrintGrid.Headers(i).Font, New SolidBrush(PrintGrid.HeaderForeColor), New RectangleF(CurrentX - PrintGrid.Headers(i).Width, CurrentY, PrintGrid.Headers(i).Width, PrintGrid.Headers(i).Height), sf)
'//next cell
CurrentX -= PrintGrid.Headers(i).Width
Else
'//draw the cell bounds (lines) and back color
g.FillRectangle(New SolidBrush(PrintGrid.HeaderBackColor), CurrentX, CurrentY, PrintGrid.Headers(i).Width, PrintGrid.Headers(i).Height)
g.DrawRectangle(New Pen(PrintGrid.LineColor), CurrentX, CurrentY, PrintGrid.Headers(i).Width, PrintGrid.Headers(i).Height)
'//draw the cell text
g.DrawString(PrintGrid.Headers(i).CText, PrintGrid.Headers(i).Font, New SolidBrush(PrintGrid.HeaderForeColor), New RectangleF(CurrentX, CurrentY, PrintGrid.Headers(i).Width, PrintGrid.Headers(i).Height), sf)
'//next cell
CurrentX += PrintGrid.Headers(i).Width
End If
Next
'//reset to beginning
If (bRightToLeft) Then
'//right align
CurrentX = PrintDoc.DefaultPageSettings.PaperSize.Width - PrintDoc.DefaultPageSettings.Margins.Right
Else
'//left align
CurrentX = PrintDoc.DefaultPageSettings.Margins.Left
End If
'//advance to next row
CurrentY = CurrentY + CType(PrintGrid.Headers.GetValue(0), Header).Height
End Sub
Private Function PrintDataGrid(ByVal g As Graphics) As Boolean
Dim sf As StringFormat = New StringFormat
PageCounter = PageCounter + 1
'//if we want to print the grid right to left
If (bRightToLeft) Then
CurrentX = PrintDoc.DefaultPageSettings.PaperSize.Width - PrintDoc.DefaultPageSettings.Margins.Right
sf.FormatFlags = StringFormatFlags.DirectionRightToLeft
Else
CurrentX = PrintDoc.DefaultPageSettings.Margins.Left
End If
Dim i As Integer
For i = CurrentRow To PrintGrid.Rows - 1
Dim j As Integer
For j = 0 To PrintGrid.Columns - 1
'//set cell alignment
Select Case (PrintGrid.Cell(i, j).Alignment)
'//left
Case HorizontalAlignment.Left
sf.Alignment = StringAlignment.Near
Case HorizontalAlignment.Center
sf.Alignment = StringAlignment.Center
'//right
Case HorizontalAlignment.Right
sf.Alignment = StringAlignment.Far
End Select
'//advance X according to order
If (bRightToLeft) Then
'//draw the cell bounds (lines) and back color
g.FillRectangle(New SolidBrush(PrintGrid.BackColor), CurrentX - PrintGrid.Cell(i, j).Width, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height)
g.DrawRectangle(New Pen(PrintGrid.LineColor), CurrentX - PrintGrid.Cell(i, j).Width, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height)
'//draw the cell text
g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX - PrintGrid.Cell(i, j).Width, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
'//next cell
CurrentX -= PrintGrid.Cell(i, j).Width
Else
'//draw the cell bounds (lines) and back color
g.FillRectangle(New SolidBrush(PrintGrid.BackColor), CurrentX, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height)
g.DrawRectangle(New Pen(PrintGrid.LineColor), CurrentX, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height)
'//draw the cell text
'//Draw text by alignment
g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
'//next cell
CurrentX += PrintGrid.Cell(i, j).Width
End If
Next
'//reset to beginning
If (bRightToLeft) Then
'//right align
CurrentX = PrintDoc.DefaultPageSettings.PaperSize.Width - PrintDoc.DefaultPageSettings.Margins.Right
Else
'//left align
CurrentX = PrintDoc.DefaultPageSettings.Margins.Left
End If
'//advance to next row
CurrentY += PrintGrid.Cell(i, 0).Height
CurrentRow += 1
'//if we are beyond the page margin (bottom) then we need another page,
'//return true
If (CurrentY > PrintDoc.DefaultPageSettings.PaperSize.Height - PrintDoc.DefaultPageSettings.Margins.Bottom) Then
Return True
End If
Next
Return False
End Function
End Class
End Namespace
导入系统
导入System.Windows.Forms
导入系统。绘图
导入系统。绘图。打印
导入系统集合
导入系统数据
名称空间打印
公共类PrinterClass
“//数据网格的克隆
将打印网格变暗为网格
'//用于初始打印机设置的printdocument
私有PrintDoc作为PrintDocument
“//定义网格是否从右向左排序
私有bRightToLeft作为布尔值
'//当前顶部
单独的专用电流Y=0
'//当前左侧
Private CurrentX作为单个=0
“//要打印的当前行
Private CurrentRow作为整数=0
'//页计数器
作为整数的公共分页计数器=0
'///
“///构造函数类
'///
'///
'///
Public Sub New(ByVal pdocument作为打印文档,ByVal dgrid作为数据网格)
'MyBase.new()
PrintGrid=新网格(dgrid)
PrintDoc=pdocument
“//网格列从右到左
bRightToLeft=dgrid.RightToLeft=RightToLeft.Yes
'//init CurrentX和CurrentY
CurrentY=pdocument.DefaultPageSettings.Margins.Top
CurrentX=pdocument.DefaultPageSettings.Margins.Left
端接头
公共函数打印(ByVal g作为图形,ByRef currentX作为单个,ByRef currentY作为单个)作为布尔值
“//使用预定义区域
currentX=currentX
currentY=currentY
打印头(g)
将更多页面设置为布尔值=PrintDataGrid(g)
currentY=currentY
currentX=currentX
返回更多页面
端函数
公共函数打印(ByVal g作为图形)为布尔值
CurrentX=PrintDoc.DefaultPageSettings.Margins.Left
CurrentY=PrintDoc.DefaultPageSettings.Margins.Top
打印头(g)
返回PrintDataGrid(g)
端函数
'///
'///打印网格标题
'///
'///
专用子打印标题(ByVal g作为图形)
尺寸sf为StringFormat=新StringFormat
“//如果要从右向左打印网格
如果(bRightToLeft)那么
CurrentX=PrintDoc.DefaultPageSettings.PaperSize.Width-PrintDoc.DefaultPageSettings.Margins.Right
sf.FormatFlags=StringFormatFlags.DirectionRightToLeft
其他的
CurrentX=PrintDoc.DefaultPageSettings.Margins.Left
如果结束
作为整数的Dim i
对于i=0的PrintGrid.Columns-1
“//设置标题对齐方式
选择案例(CType(PrintGrid.Headers.GetValue(i),Header.Alignment)
案例水平对齐。左“左”
sf.Alignment=StringAlignment.Near
案例水平对齐。居中
sf.Alignment=StringAlignment.Center
案例水平对齐。对
sf.Alignment=StringAlignment.Far
结束选择
“//根据订单预付X
如果(bRightToLeft)那么
“//绘制单元格边界(线)和背景色
g、 FillRectangle(新的SolidBrush(PrintGrid.HeaderBackColor)、CurrentX-PrintGrid.Headers(i).宽度、CurrentY、PrintGrid.Headers(i).宽度、PrintGrid.Headers(i).高度)
g、 DrawRectangle(新画笔(PrintGrid.LineColor)、CurrentX-PrintGrid.Headers(i).宽度、CurrentY、PrintGrid.Headers(i).宽度、PrintGrid.Headers(i).高度)
“//绘制单元格文本
g、 DrawString(PrintGrid.Headers(i).CText,PrintGrid.Headers(i).Font,New SolidBrush(PrintGrid.HeaderForeColor),New RectangleF(CurrentX-PrintGrid.Headers(i).Width,CurrentY,PrintGrid.Headers(i).Width,PrintGrid.Headers(i).Height,sf)
“//下一个单元格
CurrentX-=PrintGrid.Header(i).宽度
其他的
“//绘制单元格边界(线)和背景色
g、 FillRectangle(新的SolidBrush(PrintGrid.HeaderBackColor)、CurrentX、CurrentY、PrintGrid.Headers(i).宽度、PrintGrid.Headers(i).高度)
g、 DrawRectangle(新笔(PrintGrid.LineColor)、CurrentX、CurrentY、PrintGrid.Headers(i).宽度、PrintGrid.Headers(i).高度)
“//绘制单元格文本
g、 DrawString(PrintGrid.Headers(i).CText,PrintGrid.Headers(i).Font,新SolidBrush(PrintGrid.HeaderForeColor),新矩形F(CurrentX,CurrentY,PrintGrid.Headers(i).Width,PrintGrid.Headers(i).Height,sf)
“//下一个单元格
CurrentX+=PrintGrid.Header(i).宽度
如果结束
下一个
“//重置为开始
如果(bRightToLeft)那么
“//右对齐
CurrentX=PrintDoc.DefaultPageSettings.PaperSize.Width-PrintDoc.DefaultPageSettings.Margins.Right
其他的
“//左对齐
CurrentX=PrintDoc.DefaultPageSettings.Margins.Left
如果结束
“//前进到下一行
CurrentY=CurrentY+CType(PrintGrid.Headers.GetValue(0),Header)。高度
端接头
私有函数PrintDataGrid(ByVal g作为图形)作为布尔值
尺寸sf为StringFormat=新StringFormat
PageCounter=PageCounter+1
“//如果要从右向左打印网格
如果(bRightToLeft)那么
CurrentX=PrintDoc.DefaultPageSettings.PaperSize.Width-PrintDoc.DefaultPageSettings.Margins.Right
sf.FormatFlags=StringFormatFlags.DirectionRightToLeft
其他的
CurrentX=PrintDoc.DefaultPageSettings.Margins.Left
如果结束
作为整数的Dim i
对于i=CurrentRow到PrintGrid.Rows-1
作为整数的Dim j
对于j=0到PrintGrid.Columns-1
“//设置单元格对齐方式
选择C
'//draw the cell text
g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX - PrintGrid.Cell(i, j).Width, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
If j = PrintGrid.Columns - 1 Then
Dim pattern As String = "MM-dd-yy"
If DateTime.TryParseExact(PrintGrid.Cell(i, j).CText, pattern, Nothing, DateTimeStyles.None, PrintGrid.Cell(i, j).CText) Then
g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX - PrintGrid.Cell(i, j).Width, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
Else
g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX - PrintGrid.Cell(i, j).Width, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
End If
'//Draw text by alignment
' g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
If j = 3 Or j = 4 Then
Dim st As String = PrintGrid.Cell(i, j).CText.ToString
Dim t As Array = st.Split(" ")
g.DrawString(t(0), PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
Else
g.DrawString(PrintGrid.Cell(i, j).CText, PrintGrid.Cell(i, j).Font, New SolidBrush(PrintGrid.ForeColor), New RectangleF(CurrentX, CurrentY, PrintGrid.Cell(i, j).Width, PrintGrid.Cell(i, j).Height), sf)
End If