如何在表单上使用打印预览

时间:2018-11-30 19:14:28

标签: .net vb.net printing

我有一个包含十几个子报表的大型报表。整个过程都是由数据驱动的,并且用户使用PrintDocument和PrintPreview。一切正常。

我现在想为用户提供编辑功能。这将使他们能够修改报告的方式。我能想到的最好的方法是使用相同的代码打印到表单。该报告以英寸为单位。我尝试使用96倍的测量值(每英寸96像素),但它似乎太小了。那是我唯一能找到的转换。

我想知道是否有人在我攻克转化率之前知道一个好的转化率。

这是报告: Inventory Report

这是我到目前为止的内容: Inventory Report Editor

我使用此代码在打印到纸张和表单之间切换(如果mfrmForm为空(空),则打印到纸张,否则打印到表单):

If mfrmForm IsNot Nothing Then
    e = New PrintPageEventArgs(mfrmForm.CreateGraphics, New Rectangle(New Point(25, 25), New Size(New Point(825, 1075))), e.PageBounds, e.PageSettings)
End If

...

Select Case eAlign
    Case HardCopy.Alignment.Center
        If mfrmForm Is Nothing Then
            e.Graphics.DrawString(strText, PrintFont, New SolidBrush(PI.Color), (PC.Left + (PC.Width - sngTextWidth) / 2), sngYPosition)
        Else
            lbl = New System.Windows.Forms.Label
            With lbl
                If PI.Background IsNot Nothing Then
                .BackColor = Color.FromArgb(PI.Background.GetValueOrDefault) ' Color.FromArgb(CInt(C.Color))
                End If
                .ForeColor = PI.Color
                .Font = PrintFont
                .Location = New Point(CInt(((PC.Left + (PC.Width - sngTextWidth) / 2) * 96).ToString), CInt((sngYPosition * 96).ToString))
                .Text = PI.Text
                .Visible = True
            End With
            mfrmForm.Controls.Add(lbl)
        End If

End Select

PI和PC只是用于保存值的对象(PrintItem和PrintColumn)。我将需要转换回英寸以使数据持久化。我希望有人在此领域有所了解之前。

谢谢

1 个答案:

答案 0 :(得分:0)

我实际上正在将用户配置另存为设置文件。我先使用默认设置,然后将其保存在“打印”通话中。enter image description here