【问题标题】:VB.net Printform cant find pathVB.net Printform 找不到路径
【发布时间】:2017-10-17 19:40:13
【问题描述】:

所以我正在处理需要打印的表格。我想使用 Foxit PDF 打印机得到一个 PDF 文件。问题是我无法弄清楚如何将选定的路径作为文件位置,所以我不断得到路径不能为空。 错误。使用 Printform 时,我应该将文件位置放在代码中的什么位置? 在此代码中,文件夹名称是我要打印的位置。

Private Sub BtnPrint_Click(sender As Object, e As EventArgs) Handles BtnPrint.Click

    Dim folderDlg As New FolderBrowserDialog
    Dim foldername As String
    folderDlg.ShowNewFolderButton = True
    If (folderDlg.ShowDialog() = DialogResult.OK) Then
        foldername = folderDlg.SelectedPath
        Dim root As Environment.SpecialFolder = folderDlg.RootFolder

    End If

    PrintForm1.Print()

End Sub

编辑:

实际上删除了部分代码,但仍然出现相同的错误(我知道第一部分没有做任何事情)。我现在使用的是:

Private Sub BtnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles BtnPrint.Click

    PrintForm1.Print()

End Sub

关于 Printform 的 Microsoft 帮助数据库也没有帮助,因为我完全按照它所说的做了,但仍然收到 Path is Null 错误

编辑 2: 所以我现在正在使用这段代码,它正在工作。

 Private Sub BtnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles BtnPrint.Click

    PrintDialog1.PrinterSettings = PrintForm1.PrinterSettings
    PrintDialog1.AllowSomePages = True
    If PrintDialog1.ShowDialog = DialogResult.OK Then PrintForm1.PrinterSettings = PrintDialog1.PrinterSettings

    With Me.PrintForm1
        .PrintAction = Printing.PrintAction.PrintToPreview

        Dim MyMargins As New Margins

        With MyMargins
            .Left = 10
            .Right = 10
            .Top = 10
            .Bottom = 10
        End With

        .PrinterSettings.DefaultPageSettings.Margins = MyMargins

        .Print()

    End With

End Sub

但是一旦我尝试设置它应该打印的区域,我就会收到以下错误:“打印不是 powerpacks 的成员”。我根据微软尝试使用以下代码,这是它应该工作的方式。我不知道错误来自哪里

.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.ClientAreaOnly)  

【问题讨论】:

  • 我不确定.Print() 是如何工作的——它是否使用了root?您确定 DialogResult 返回 True 吗?你调试过吗?我知道 Foxit,但不确定它是如何在这里使用的 - 这是一个 API/库吗?
  • Printform.print() 工作,我得到对话框来选择打印机,在打印机的属性中我可以选择路径,但是一旦我按下打印,我就会得到错误没有选择路径。 Foxit 只是我正在使用的实际打印机,而且当我选择实际的物理打印机时,我得到了同样的错误。
  • 好的,但我不明白打印机如何知道您在上面设置的路径是它打算使用的路径。您能否发布更多代码?我真的建议在您的代码中放置断点,并至少获取内部异常和/或堆栈跟踪失败的位。
  • “PDF 打印机”实际上并不是打印机。它只是一个作用类似于打印机的打印机驱动程序。非常方便,允许任何可以打印的应用程序生成 PDF 文件。但是你必须注意细节,它需要知道文件的路径。您必须将 PrinterSettings.PrintToFile 设置为 true 并设置 PrintFileName 属性。现在你知道了。

标签: vb.net printform


【解决方案1】:

您不需要使用 printform 的路径。 Printform 只是将您在屏幕上看到的内容打印到您的默认打印机。您需要安装“Visual Basic PowerPacks”才能使用此命令。您可以在这里找到更多解释: https://docs.microsoft.com/en-us/dotnet/visual-basic/developing-apps/printing/how-to-print-a-form-by-using-the-printform-component

【讨论】:

  • 这就是我没有得到的每个人都说您不需要路径或文件名预设,如果您将其留空,它应该提示用户输入文件名和路径。这是 microsoft 帮助所说的:“或者,选择 PrintFileName 属性并键入目标文件的完整路径和文件名。如果跳过此步骤,将在运行时提示用户输入文件名。”但我不断收到此错误: SYStem.argumentnullexception: Path Canoot 为空。参数名称:路径。
  • 除此之外,当我在打印属性中选择一个路径时,我仍然得到同样的错误。另外我确实安装了电源组
  • 当我双击工具箱中的打印表单时,它会将 PrintForm1 添加到项目中。所以在 printbutton 我只需要添加: PrintForm1.Print() 并将我在屏幕上看到的内容打印为 pdf,因为我已将可爱的 pdf 设置为我的默认打印机。
  • 尝试更改我的默认打印机仍然不起作用。稍微编辑了我的代码,nog 设法让它工作。请参阅问题中的新代码。
【解决方案2】:

要预览您的打印,您不需要使用 printdialog 和所有这些。您只需在设计器中单击 printform1,即可打开 printform1 的属性窗口。在 printaction 中,您选择 PrintToPreview。这就是它所需要的。 这些都是我需要的行:

Public Class Form1
Private Sub Exit_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Application.Exit()
End Sub

Private Sub Print_Click(sender As Object, e As EventArgs) Handles Button1.Click
    PrintForm1.Print()
End Sub

结束类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2013-05-27
    • 2013-02-26
    相关资源
    最近更新 更多