Bonjour,

J'ai développé une application en VB.net (2005) dans laquelle les utilisateurs peuvent visualiser et imprimer un état dynamique.

Tout marche bien, maintenant je veux faire un traitement spécifique lorsque les utilisateurs visualisent les documents et valident l'impression (Mais Rien faire lorsque les utilisateurs cliquent sur annuler).

J'ai essayé d'implémenter la solution en utilisant le code ci-dessous. Cependant avec ce code le PrintDialog s'affiche deux fois et le traitement spécifique ne s’exécute que lorsque l'impression est validée dans le deuxième PrintDialog.

Ma question est comment désactiver le lancement du PrintDialog par défaut (Le premier) ou comment intercepter la valeur de son DialogResult afin de ne pas instancier le deuxième PrintDialog (My_PrintDialog)

A- Code exécuté lors du rechargement du ReportViewer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
    Private Sub My_CrystalReportViewer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles My_CrystalReportViewer.Load
 
        Try
 
 
            For Each Current_Ctrl As Control In My_CrystalReportViewer.Controls
 
                If TypeOf Current_Ctrl Is Windows.Forms.ToolStrip Then
 
                    For Each Item As Object In CType(Current_Ctrl, ToolStrip).Items
 
                        If Item.AccessibleName = "Print Report" Then
 
                            Dim My_Print_Button As ToolStripButton = CType(Item, ToolStripButton)
 
 
                            AddHandler My_Print_Button.Click, AddressOf Upgrade_Print_Button_Click
 
                            Exit For
 
                        End If
 
                    Next
 
                End If
 
            Next
 
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
 
    End Sub
B. Code Exécuter lorsque l'utilisateur clique sur le bouton Imprimer du ReportViewer

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    Private Sub Upgrade_Print_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
 
        Dim My_PrintDialog As New PrintDialog
 
        If My_PrintDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
 
 
            Me.My_CrystalReportViewer.ReportSource.PrintOptions.PrinterName = My_PrintDialog.PrinterSettings.PrinterName
            Me.My_CrystalReportViewer.ReportSource.PrintToPrinter(My_PrintDialog.PrinterSettings.Copies, My_PrintDialog.PrinterSettings.Collate, My_PrintDialog.PrinterSettings.FromPage, My_PrintDialog.PrinterSettings.ToPage)
 
            '' Faire le traitement spécifique
 
        Else
 
            '' Rien Faire
        End If
 
 
    End Sub