Impression avec Visual Studio

Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009 - 15 mai 2007 à 14:53
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 16 mai 2007 à 11:22
Bonjour,

lorsque j'imprime une variable, la feuille imprimée ne contient que la 1er ligne. Or la variable StrPrintValue contient bien un dizaine de ligne.

Code :
-------
PrivateSub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Printer1.PrintPage

e.Graphics.DrawString(StrPrintValue, New Font("Arial", 10), Brushes.Black, 10, 10)

EndSub

Que faire ? Merci

Marco

5 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
15 mai 2007 à 15:46
Ah mon avis le problème viens du fait que DrawString ne va pas à la ligne.
Tu dois alors séparer StrPrintValue en plusieurs sous-chaines correspondant aux lignes de ton document. Hint : utilise Graphics.MeasureString pour connaitre la taille graphique d'une chaine de caractères donnée.

<hr size="2" width="100%" />Julien.
0
Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009
16 mai 2007 à 08:45
Existe-t-il d'autres méthodes pour imprimer "d'un coup" le contenu d'une TextBox ?

Merci,

Marco
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 08:54
Bonjour,

Faut voir de quoi il s'agit là, exactement ...
Tu nous parles du contenu d'une textbox, maintenant.

Une textbox contient deux sortes de lignes : les vraies et les "fausses"
Les vraies sont séparées par un retour charriot
Les "fausses" ne correspondent qu'à une disposition d'affichage en fonction de la police de caractères et de la largeur de la textbox

La variable qui contiendrait le contenu de la textbox ne considèrerait, quant à elle, que les vrais sauts de ligne et ignorerait les "faux"...bien évidemment.
0
Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009
16 mai 2007 à 09:52
En effet, ma variable StrPrintValue est remplie par le contenu d'une Textbox..

Que faire alors dans ce cas ?

Merci,
Marco
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
16 mai 2007 à 11:22
Salut,
J'allais te dire d'utiliser Control.DrawToBitmap, mais apparemment ca ne marche pas avec les textbox...
Donc il faut faire un peu plus rusé :

Il faut accèder à la méthode OnPrint du contrôle et donc on doit le subclasser, faisons une classe MyTextBox héritant de TextBox
Je te colle le code que ca donne ici :
Public

Class MyTextBox

Inherits TextBox

Shadows
Function DrawToBitmap()
As Bitmap

Dim r
As
New Bitmap(Width, Height)

Dim g
As Graphics = Graphics.FromImage(r)

Dim args
As
New PaintEventArgs(g,
New Rectangle(0, 0, Width, Height))

MyBase.OnPrint(args)

Return r

End
FunctionEnd

ClassTu remplace évidemment la TextBox contenant StrPrintValue par une MyTextBox (vérifie notamment bien que sa propriété visible est à True), appelons la MyTextBox1.
Et ensuite pour dessiner la textbox sur la feuille à imprimer, tu remplace

e.Graphics.DrawString( StrPrintValue , New Font("Arial", 10), Brushes.Black, 10, 10)

Par

MyTextBox1.Font = New Font("Arial", 10)
e.Graphics.DrawImage(MyTextBox1.DrawToBitmap, New Point(10,10))

<hr width="100%" size="2" />
Julien.
0
Rejoignez-nous