Как использовать общедоступную подпроцедуру, использующую имя формы в качестве переменной
У меня есть большое количество бланков, которые нужно распечатать. Я добавил кнопку к каждой форме, которая может вызвать печать формы (в формате PDF). Вместо того чтобы повторять код для каждой формы, я хочу создать общую процедуру, которая может быть вызвана при выборе кнопки. Мой код ниже создает ошибки!
Любая помощь будет принята с благодарностью.
Что я уже пробовал:
В моей заявке есть несколько бланков, которые я хочу распечатать. Поэтому на каждой форме у меня есть кнопка для создания печати.
Код кнопки выглядит следующим образом;
Private Sub PDFTeamBut_Click(sender As Object, e As EventArgs) Handles PDFTeamBut.Click PDFTeamBut.Visible = False PrtTSBut.Visible = False Array.ForEach(Me.Controls.OfType(Of TextBox).ToArray, Sub(tb As TextBox) tb.DeselectAll()) PrintForm1.PrinterSettings.PrinterName = "Microsoft Print to PDF" PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter If PrintForm1.PrinterSettings.IsValid Then PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize = New System.Drawing.Printing.PaperSize("PaperA4", 830, 1170) PrintForm1.PrinterSettings.DefaultPageSettings.Landscape = False PrintForm1.PrinterSettings.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(3.2, 3.2, 1.5, 14.5) PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.Scrollable) Else MessageBox.Show("Microsoft Print to PDF printer not set up!") End If PDFTeamBut.Visible = True PrtTSBut.Visible = True Me.Hide()'Hides form to be printed FormName.InputForm.Show()'Returns to input form End Sub
Я хочу заменить код вызовом публичной подпроцедуры, например
Private Sub PDFTeamBut_Click(sender As Object, e As EventArgs) Handles PDFTeamBut.Click CreatePDF(NameOfForm) End Sub
С процедурой публичных суб ;
Public Class PDFPrint Public Sub CreatePDF(ByVal FormName As Form) 'Creates a PDF file of the named form FormName.PDFTeamBut.Visible = False FormName.PrtTSBut.Visible = False Array.ForEach(FormName.Controls.OfType(Of TextBox).ToArray, Sub(tb As TextBox) tb.DeselectAll()) FormName.PrintForm1.PrinterSettings.PrinterName = "Microsoft Print to PDF" FormName.PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter If FormName.PrintForm1.PrinterSettings.IsValid Then FormName.PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize = New System.Drawing.Printing.PaperSize("PaperA4", 830, 1170) FormName.PrintForm1.PrinterSettings.DefaultPageSettings.Landscape = False FormName.PrintForm1.PrinterSettings.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(3.2, 3.2, 1.5, 14.5) FormName.PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.Scrollable) Else MessageBox.Show("Microsoft Print to PDF printer not set up!") End If FormName.PDFTeamBut.Visible = True FormName.PrtTSBut.Visible = True FormName.Hide()'Hides form to be printed InputForm.Show()'Returns to input form End Sub End Class
Но я получаю следующие ошибки кодирования, такие как;
Error BC30456 'PDFTeamBut' is not a member of 'Form'.
и
Error BC30456 'PrintForm1' is not a member of 'Form'.
[no name]
Похоже на работу по наследству.
Dave the Golfer
Не понимаю!