编辑代码

Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click
    '从文本框获取输入
    Dim companyName As String = txtCompanyName.Text
    Dim itemName As String = txtItemName.Text
    Dim quantity As Integer = CInt(txtQuantity.Text)
    Dim price As Double = CDbl(txtPrice.Text)
    Dim remark As String = txtRemark.Text

    '计算总价
    Dim amount As Double = price * quantity

    '打开打印对话框
    Dim printDialog As New PrintDialog()
    If printDialog.ShowDialog() = DialogResult.OK Then
        '获取打印机设置和页边距
        Dim printerSettings As PrinterSettings = printDialog.PrinterSettings
        Dim pageSettings As New PageSettings(printerSettings)

        '设置打印机字体和页边距
        Dim font As New Font("Arial", 12)
        Dim marginBounds As RectangleF = pageSettings.PrintableArea
        Dim printableBounds As RectangleF = marginBounds
        printableBounds.X += 50
        printableBounds.Width -= 100
        printableBounds.Y += 50
        printableBounds.Height -= 100

        '初始化打印对象
        Dim printDocument As New PrintDocument()
        printDocument.PrinterSettings = printerSettings
        printDocument.DefaultPageSettings = pageSettings
        AddHandler printDocument.PrintPage, AddressOf PrintPageEventHandler

        '开始打印
        printDocument.Print()

        '释放资源
        font.Dispose()
        printDocument.Dispose()
    End If
End Sub

Private Sub PrintPageEventHandler(ByVal sender As Object, ByVal e As PrintPageEventArgs)
    '获取输入数据
    Dim companyName As String = txtCompanyName.Text
    Dim itemName As String = txtItemName.Text
    Dim quantity As Integer = CInt(txtQuantity.Text)
    Dim price As Double = CDbl(txtPrice.Text)
    Dim remark As String = txtRemark.Text

    '计算总价
    Dim amount As Double = price * quantity

    '设置位置和间距
    Dim leftMargin As Integer = 50
    Dim topMargin As Integer = 100
    Dim lineHeight As Integer = 25

    '设置打印机字体和颜色
    Dim font As New Font("Arial", 12)
    Dim brush As New SolidBrush(Color.Black)

    '绘制出库单内容
    e.Graphics.DrawString("出库单", font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("-------------------------", font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("单位名称: " & companyName, font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("商品名称: " & itemName, font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("数量: " & quantity, font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("单价: " & price.ToString("0.00"), font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("金额: " & amount.ToString("0.00"), font, brush, leftMargin, topMargin)
    topMargin += lineHeight
    e.Graphics.DrawString("备注: " & remark, font, brush, leftMargin, topMargin)

    '释放资源
    font.Dispose()
    brush.Dispose()
End Sub