2017-10-16 214 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 

末級