2017-10-16 168 views
0

所以我正在处理需要打印的表单。我想最终使用Foxit PDF打印机的PDF文件。问题是,我不知道如何获取选定的路径作为文件位置,所以我不断得到一个路径不能为空。 错误。在使用Printform时,我应该在代码中放置文件位置? 在此代码中,文件夹名称是我要打印的位置。VB.net 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 

编辑:

实际删除代码的一部分,仍然得到同样的错误(第一部分wasnt做任何事情先从我知道)。所有我现在使用的是:

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

    PrintForm1.Print() 

End Sub 

约Printform也是微软帮助数据库心不是帮助,因为我已经做正是它说,仍然获得路径为空错误

编辑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) 
+0

我不知道如何'.PRINT()'工作 - 是使用它'root'?你确定DialogResult返回True吗?你有调试过吗?我认识福昕,但我不确定它在这里如何使用 - 这是一个API /库吗? –

+0

Printform.print()工作,我得到对话框来选择打印机,并在打印机的属性中,我可以选择路径,但只要我按下打印,我得到没有选择路径的错误。 Foxit只是我正在使用的实际打印机,而且当我选择实际的物理打印机时,我也遇到同样的错误。 –

+0

好的,但我不明白打印机如何知道上面设置的路径是它打算使用的路径。你可能会发布更多的代码?我真的建议在代码中放置断点,并至少获取失败位的内部异常和/或堆栈跟踪。 –

回答

0

你并不需要一个路径使用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

+0

多数民众赞成什么我没有得到大家说,你不需要一个路径或文件名预设,如果你让它为空它应该提示用户输入文件名和路径。这就是Microsoft的帮助所说的:“或者,选择PrintFileName属性并输入目标文件的完整路径和文件名。 如果你跳过这一步,用户会在运行时提示输入文件名“但是我一直收到这个错误:SYstem.argumentnullexception:Path Canoot为null。参数名:path。 –

+0

除此之外,当我做在打印属性中选择一个路径我仍然得到相同的错误加上我有powerpack安装 –

+0

当我双击工具箱中的打印形式时,它将PrintForm1添加到项目中,所以在printbutton中我只需要添加:PrintForm1。打印(),它将我在屏幕上看到的内容打印到pdf上,因为我已经将可爱的PDF设置为默认打印机 – minimalist

0

要预览您的打印,你不需要使用printdialog和所有这一切。您只需在设计器中单击printform1即可启动printform1的属性窗口。在打印中,您可以选择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 

末级