IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET][VS2005] Classe PrintDocument - annuler l'impression


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Par défaut [VB.NET][VS2005] Classe PrintDocument - annuler l'impression
    Bonjour,

    Je suis en train de finaliser le développement d'une classe héritée de PrintDocument.

    On l'appelle de cette façon:

    Code VB.NET : 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
     
    Private Sub btnSign35x11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSign35x11.Click
            Dim prnDialog85x11 As New PrintDialog
            Dim affiche As New Signs85x11
            prnDialog85x11.Document = affiche
            prnDialog85x11.AllowSomePages = True
     
            Try
                If prnDialog85x11.ShowDialog() = Windows.Forms.DialogResult.OK Then
                    affiche.Print()
                End If
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
     
            Finally
                If Not affiche Is Nothing Then
                    affiche.Dispose()
                End If
            End Try
        End Sub

    Dans le constructeur et la fonction InitialiserGraphiques():

    Code VB.NET : 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
    Public Sub New()
            MyBase.New() ' Constructeur de la classe de base (PrintDocument)
            Me.InitialiserGraphiques()
        End Sub
    
        ' Initialisation des objets graphiques et des options
        Private Sub InitialiserGraphiques()
            Me.DefaultPageSettings.Landscape = False
            Me.DocumentName = "Le nom du logiciel - Document"
    ...
            Try
                Me.totalPages = Utility_SQL.GetTotalCount("usager", "mot de passe", "le nom de la table") ' Fonction développée à part qui gère toute la connexion à la BD SQL Server 2005
                If Me.totalPages = 0 Then
                    ' C'est ici que je dois entrer du code pour annuler complètement
                    ' l'exécution du code, si c'est possible... 
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                ' Si nécessaire, du code à ajouter pour fermer ce qui est ouvert
            End Try
    
            ' Lire les données de la table ToPrint et compter le nombre de rangées
    
        End Sub

    Et j'ai toujours ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If (Me.currentPage < Me.totalPages) Then
                    e.HasMorePages = True
                    Me.currentPage = Me.currentPage + 1 
                Else
                    e.HasMorePages = False
                End If
    Dans le constructeur, je mets comme condition que Me.totalPages ne doit pas être égal à zéro --> le cas échéant, pour gagner du temps CPU je désire annuler la gestion de l'événement PrintPage envoyé par la boîte de dialogue, afin d'éviter que le code ne soit lu pour rien, et peut-être envoyer un message «Il n'y aucune fiche à imprimer» à l'usager.

    Y a-t-il possibilité de le faire? J'espère avoir été suffisamment claire. D'avance, merci beaucoup.
    Anne, citoyenne canadienne
    Informaticienne, altiste et radioamateur... bref, originale
    Lire les règles...
    Un petit rappel: Je ne réponds à aucune question technique posée par MP

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut Anne,

    Je ne sais pas si j'ai bien compris ton probleme, mais si tu remontais ton test if d'un niveau ?

    Code VB.Net : 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
    Public Sub New()
            MyBase.New() ' Constructeur de la classe de base (PrintDocument)
            Me.InitialiserGraphiques()
        End Sub
    
        ' Initialisation des objets graphiques et des options
        Private Sub InitialiserGraphiques()
            Me.DefaultPageSettings.Landscape = False
            Me.DocumentName = "Le nom du logiciel - Document"
    ...
            Try
                Me.totalPages = Utility_SQL.GetTotalCount("usager", "mot de passe", "le nom de la table") ' Fonction développée à part qui gère toute la connexion à la BD SQL Server 2005
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                ' Si nécessaire, du code à ajouter pour fermer ce qui est ouvert
            End Try
               If Me.totalPages <> 0 Then
                    ' C'est ici que je dois entrer du code pour annuler complètement
                    ' l'exécution du code, si c'est possible... 
    
            ' Lire les données de la table ToPrint et compter le nombre de rangées
                End If
        End Sub

  3. #3
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    pour annuler c'est e.Cancel ou e est le PrintPageEventArgs

  4. #4
    Membre éprouvé
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Par défaut
    Merci à vous deux, j'essaie et vous tiens au courant.

    [EDIT]
    Mettre e.Cancel = true dans un If fonctionne comme sur des roulettes. Merci!
    [/EDIT]
    Anne, citoyenne canadienne
    Informaticienne, altiste et radioamateur... bref, originale
    Lire les règles...
    Un petit rappel: Je ne réponds à aucune question technique posée par MP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/06/2007, 18h02
  2. Réponses: 9
    Dernier message: 07/10/2006, 10h54
  3. Réponses: 1
    Dernier message: 22/06/2006, 09h17
  4. Liaison datagrid datareader [VB.NET][VS2005]
    Par DonF dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/11/2005, 11h59
  5. annuler une impression en cour
    Par mondanikoffi dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/07/2005, 20h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo