Se connecter avec
S'enregistrer | Connectez-vous

[VB.NET - QUELLE AIDE!] - Apercu avant impression

Dernière réponse : dans Programmation

Bonjour.

J'ai un probleme en VB.NET... quand je lance un aperçu avant impression de plus d'une page, et que, à partir de la boite de dialogue d'aperçu, je lance l'impression, je me retrouve avec une page blanche unique...
je vous donne mon bout de code:

  1. Private Sub btnApercu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApercu.Click
  2. nb = 0
  3. Dim LePageSettings As New System.Drawing.Printing.PageSettings
  4. LePageSettings.Landscape = True
  5. PrintDocument1.DefaultPageSettings = LePageSettings
  6. Dim dllg As New PrintPreviewDialog
  7. dllg.Document = PrintDocument1()
  8. dllg.ShowDialog()
  9. nb = 0
  10. End Sub
  11.  
  12.  
  13.  
  14. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
  15.  
  16. e.PageSettings.Landscape = True
  17.  
  18. Dim X As Integer = 10
  19. Dim Y As Integer = 200
  20.  
  21. Dim Xg As Integer = 0
  22.  
  23. Dim p As System.Drawing.PointF
  24. Dim rect As RectangleF
  25.  
  26. Dim myPen As Pen = New Pen(Color.Black, 1)
  27.  
  28. Dim page As Boolean = True
  29. While (nb < cbQte.SelectedIndex + 1 And page)
  30.  
  31. 'La partie ou je mets en page...!
  32. nb += 1
  33. page = false
  34. End While
  35. page = True
  36.  
  37. e.HasMorePages = IIf(nb < (cbQte.SelectedIndex + 1), True, False)
  38.  
  39. End Sub



si quelqu'un avait une idée, ça serait cool, merci!

Autres pages sur : net aide apercu impression

Lassé par la pub ? Créez un compte

Si ta page n'affiche rien c'est dans ta partie 'mise en page' tu ne fais qu'incrémenter 'nb', tu n'affiche rien sur ta page.

SI elle est unique, c'est parce que lorque tu met ton 'e.HasMorePages' à 'True', tu le fais, c'est bien, mais tu ne reviens pas sur ta 'Mise en page' pour continuer à afficher sur cette 2nde feuille.

Mon prog reprend le même principe que le tiens, sauf que moi j'enchaine une série de chaines afin de créer une série d'étiquettes d'adresse, Voici comment j'ai procédé :
Private Sub Etiquette(ByVal x As Integer, ByVal y As Integer, ByVal numCont As Integer, ByVal ea As System.Drawing.Printing.PrintPageEventArgs)
Dim F As Font = New Font("Verdana", 8, FontStyle.Regular, GraphicsUnit.Point, 0)
Dim Gr As Graphics = ea.Graphics

Dim ptH As Point
Dim ptV As Point

ptH.X = x
ptV.Y = y

Dim Lge As String

Lge = CStr(lesContacts.Contact(numCont).Nom) & " " & CStr(lesContacts.Contact(numCont).Prenom)
If Lge <> "" Then
Gr.DrawString(Lge, F, Brushes.Black, x, y)
y += 15
End If

En revanche je n'arrive pas à afficher de dexième page, pas même à l'aperçu avant impression...
Private Sub ImprReservation_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles Me.PrintPage

Dim x As Integer = 4
Dim y As Integer = 30
Dim n As Integer = 0

For i As Integer = 1 To 47
If n <> 0 Then
'S'il y a + de 24 étiquettes, on créé une nouvelle page
e.HasMorePages = IIf((n Mod 24 = 0), True, False)
If n Mod 24 = 0 Then
n = 0
x = 4
End If


'Si le nombre d'étiquettes est un multiple de 3, c'est qu'il y a 3 étiquettes sur la ligne
'on revient donc en bordure de page en décalant vers le bas
If n Mod 3 = 0 Then
y += 145
x = 4
End If
End If

'Appel de la procèdure qui créera une étiquette
Etiquette(x, y, i, e)
'On décale la marge de début d'écriture pour passer à l'étiquette suivante
x += 280
n += 1
Next

End Sub

Qu'en penses-tu ?
Ton post date un peu, je suis pas sûre que tu le relise ^^ mais je tente...

Bye
Lassé par la pub ? Créez un compte
Tom's guide dans le monde