je souhaiterai le "bout de code" qui me permette de vider réellement l'impression en cour (pour l'instant il ne fait que la suspendre si je clique sur annuler). Je suis en train de me noyer sous les lignes de codes que je ne parviens pas à exploiter ni même comprendre.
Voici le code qui pose problème (pas de gestion du bouton annuler).
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
If PageNumber > 0 Then
'MsgBox(PageNumber)
e.Graphics.DrawString("ART: " & ReferenceArt, New Font("Impact", 16, FontStyle.Bold), Brushes.Black, 30, 20) '1er nb marge gauche 2e marge haute
e.Graphics.DrawString("Désignation", New Font("Arial", 8, FontStyle.Regular), Brushes.Black, 42, 80) ' Désignation:
e.Graphics.DrawString(DesignationArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 40, 100) '
e.Graphics.DrawString("QTE :" & QuantiteArt, New Font("Arial", 16, FontStyle.Bold), Brushes.Black, 30, 138) '
e.Graphics.DrawString(PackArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 30, 165) ' & PageNumber() 'ici on indique le nombre d'impression restante
PageNumber -= 1 'on retire une impression
e.HasMorePages = (PageNumber > 0)
End If
End Sub
Private Sub Imprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Imprime.Click
PrintDocument1.Print()
End Sub
vu que tu n'as pas trouvé de réponse te satisfaisant, pourquoi ne pas faire manuellement un clic dans la barre de tâche sur l'icône de ton imprimante pour supprimer le document en cours?
j'ai vu cet article mais je n'ai pas trouvé la façon de l'utiliser. Voici le peut que j'ai trouvé mais ça ne fonctionne pas
Je ne suis pas l'utilisateur final et toutes les fonctions sont verrouillées par mot de passe administrateur. le but du programme entier etant l'impression d'étiquette par un utilisateur ne connaissant pas ou peut l'informatique.
If e.Cancel = True Then
MsgBox("")
e.HasMorePages = 0
MsgBox(e.HasMorePages & vbNewLine & PageNumber)
PageNumber = 0
MsgBox(PageNumber)
e.HasMorePages = False
Refresh()
Exit Sub
End If
Et nous ce qui nous ferait plaisir, serait que tu respectes les règles du forums et ne pas ouvrir de sujet en double....
Cette discussion va être supprimée par un modérateur.
Donc retourne sur le sujet initial pour décrire où tu en es par rapport à celui ci.
Et je te l'ai déjà dit, ce n'est pas un message de windows, mais du composant que tu utilises
Dans le lien de la source il y a ce code en VB6, vois si tu peux l'adapter!
Private Declare Function AbortDoc Lib "gdi32" (ByVal hdc As Long) As Long
Sub Command1_Click()
Dim R As Long
R = AbortDoc(Printer.hdc)
End Sub
'Lancez le programme par F5.
'Vous pouvez alors annuler l'impression par la touche Enter, la touche
'Echappement ou par un click sur le bouton de commande.
Merci pour le bout de code mais ".hdc" n'existe plus en .net j'avais vu ce code dans mes précédentes recherche et ça n'a pas abouti. Mais merci pour l'aide quand même.
Voici ce que j'ai trouvé ça supprime l'impression mais elle reste encore en mémoire et reprend dès que l'on clique de nouveau sur imprimer
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'c'est ici que tout ce joue
If e.Cancel = True Then
e.HasMorePages = 0
PageNumber = 0
e.HasMorePages = False
Refresh()
Exit Sub
End If
If PageNumber > 0 Then
e.Graphics.DrawString("ART: " & ReferenceArt, New Font("Impact", 16, FontStyle.Bold), Brushes.Black, 30, 20) '1er nb marge gauche 2e marge haute
e.Graphics.DrawString("Désignation", New Font("Arial", 8, FontStyle.Regular), Brushes.Black, 42, 80) ' Désignation:
e.Graphics.DrawString(DesignationArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 40, 100) '
e.Graphics.DrawString("QTE :" & QuantiteArt, New Font("Arial", 16, FontStyle.Bold), Brushes.Black, 30, 138) '
e.Graphics.DrawString(PackArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 30, 165) ' & PageNumber() 'ici on indique le nombre d'impression restante
PageNumber -= 1 'on retire une impression
e.HasMorePages = (PageNumber > 0)
End If
end sub
'c'est ici que tout ce joue
If e.Cancel = True Then
e.HasMorePages = 0
PageNumber = 0
e.HasMorePages = False
Refresh()
Exit Sub 'tu quittes donc la 2ème partie n'est pas prise en compte
End If
Mais je ne comprends toujours pas pourquoi tu t'embêtes alors qu'il est si facile de le faire manuellement!!!!!!!!!!!!!
Tu n'as pas besoin d'être féru en informatique!
@+ le Pivert
https://plasserre.developpez.com/cours/vb-net/?page=windows-forms2#LX-H-2