EssenceGold Ответов: 2

Диалогового окна printpreviewdialog - значок printdialog


Привет, ребята. PrintPreviewDialog печать кнопки печати непосредственно. Я хочу открыть экран PrintDialog и выбрать принтер. Я нашел код, но не смог его запустить. Код, который я могу запустить в C#, не работает в VB.NET-да.


Мне нужно запустить один из этих двух кодов. Заранее спасибо за вашу помощь.

Что я уже пробовал:

Код 1: Этот код работает на языке C#. VB.NET это не работает.

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        Dim b As New ToolStripButton
        b.Image = CType(PrintPreviewDialog1.Controls(1), ToolStrip).ImageList.Images(0)
        b.ToolTipText = "Print"
        b.DisplayStyle = ToolStripItemDisplayStyle.Image
        b.Click += printPreview_PrintClick() ' <--------  ERROR THIS LINE
        CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items.RemoveAt(0)
        CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items.Insert(0, b)

        PrintPreviewDialog1.StartPosition = FormStartPosition.CenterParent
        PrintPreviewDialog1.WindowState = FormWindowState.Maximized
        PrintPreviewDialog1.Icon = Icon
        PrintPreviewDialog1.ShowDialog()

    End Sub

Private Sub printPreview_PrintClick(sender As Object, e As EventArgs)
        Try
            PrintDialog1.Document = PrintDocument1
            If PrintDialog1.ShowDialog() = DialogResult.OK Then
                PrintDocument1.Print()
            End If
        Catch ex As Exception
        End Try
    End Sub


Код 2 :

 Private Sub PrintPreviewDialog1_Shown(sender As Object, e As EventArgs) Handles PrintPreviewDialog1.Shown

        Dim ts As ToolStrip = CType(Controls(1), ToolStrip) '<------- ERROR THIS LINE
        Dim printItem As ToolStripItem = ts.Items("printToolStripButton")
        With printItem
            Dim myPrintItem As ToolStripItem
            myPrintItem = ts.Items.Add(.Text, .Image, New EventHandler(AddressOf printPreview_PrintClick))
            myPrintItem.DisplayStyle = ToolStripItemDisplayStyle.Image
            ts.Items.Insert(0, myPrintItem)
        End With

        ts.Items.Remove(printItem)
    End Sub

Private Sub printPreview_PrintClick(sender As Object, e As EventArgs)
        Try
            PrintDialog1.Document = PrintDocument1
            If PrintDialog1.ShowDialog() = DialogResult.OK Then
                PrintDocument1.Print()
            End If
        Catch ex As Exception
        End Try
    End Sub

Maciej Los

Существует ряд различий между vb.net и C#...

Эта линия:

b.Click += printPreview_PrintClick()

используется для добавления обработчика значение.

Я бы посоветовал вам прочитать это: AddHandler и RemoveHandler[^]

EssenceGold

Спасибо Тебе, Мацей Лос. благодаря твоей идее я исправил код. Код 1 теперь работает нормально.

Добавитьобработчик б.Нажмите, оператором addressof printPreview_PrintClick

2 Ответов

Рейтинг:
13

EssenceGold

рабочий код:

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        BufferImg()

        Dim b As New ToolStripButton
        b.Image = CType(PrintPreviewDialog1.Controls(1), ToolStrip).ImageList.Images(0)
        b.ToolTipText = "Print"
        b.DisplayStyle = ToolStripItemDisplayStyle.Image
        AddHandler b.Click, AddressOf printPreview_PrintClick ' <---RECPLACED CODE
        CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items.RemoveAt(0)
        CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items.Insert(0, b)

        PrintPreviewDialog1.StartPosition = FormStartPosition.CenterParent
        PrintPreviewDialog1.WindowState = FormWindowState.Maximized
        PrintPreviewDialog1.Icon = Icon
        PrintPreviewDialog1.ShowDialog()

    End Sub


Рейтинг:
1

Debsbond008

Ну, код EssenceGold хорошо справляется с печатью, но он не просматривал ни одну страницу/документ.
Поэтому я заменил некоторые ваши реплики своими.

Private Sub Print_btn_Click(sender As Object, e As EventArgs) Handles Print_btn.Click
Dim b As New ToolStripButton
b.Image = CType(PrintPreviewDialog1.Controls(1), ToolStrip).ImageList.Images(0)
b.ToolTipText = "Print"
b.DisplayStyle = ToolStripItemDisplayStyle.Image
AddHandler b.Click, AddressOf PrintPreview_PrintClick
CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items.RemoveAt(0)
CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items.Insert(0, b)
'<--------- ADDED LINES------>
AddHandler PrintDocument1.PrintPage, AddressOf PrintDocument1_PrintPage
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()
End Sub