VB.net Printform не может найти путь

Поэтому я работаю над формой, которую нужно распечатать. Я хочу получить PDF-файл на принтере Foxit PDF. Проблема в том, что я не могу понять, как получить выбранный путь в качестве местоположения файла, поэтому я продолжаю получать путь не может быть нулевым. ошибка. Где в коде я должен указать расположение моего файла при использовании Printform? В этом коде foldername - это место, где я хочу напечатать.

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

Кроме того, справочная база данных Microsoft о Printform не помогает, так как я сделал именно то, что она говорит, и все еще получаю ошибку 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". Я попытался использовать следующий код в соответствии с Microsoft, это так, как это должно работать.. Я не имею ни малейшего понятия, откуда происходит ошибка

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

2 ответа

Для предварительного просмотра вашей печати вам не нужно использовать 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

Конечный класс

Вам не нужен путь для использования 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

Другие вопросы по тегам