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