Textbox zentriert drucken

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Textbox zentriert drucken

    Da ich hier neu bin sage ich erstmal "Hallo".

    Ich habe eine Form auf der ich mehrere Textboxen habe. Ich möchte nun den Inhalt dieser Textboxen an einer bestimmten Position auf einem DIN A5 Blatt drucken. Soweit funktioniert das auch ganz gut.

    Folgendes ist mein Problem. Ich habe die Textboxen auf dem Bildschirm so formatiert das der jeweilige Inhalt zentriert in der Textbox angezeigt wird. Nun möchte ich die Form drucken und der Inhalt der Textboxen soll an einer bestimmten Stelle erscheinen und somit ein Etikett beschriften. Leider wird der Inhalt der Textbox nun zwar an der richtigen Stelle aber nicht zentriert sondern linksbündig gedruckt und sieht somit auf dem Etikett doof aus.

    Der Code für eine Lösung sollte ja recht kurz sein. Ich habe trotz suchen keine Lösung gefunden und wäre dankbar für Eure Hilfe.

    Lieben Gruß
    Ich sag mal Willkommen in der Community :D

    Ich würde vorschlagen, das ganze auf ein Bitmap zu zeichnen (Da kannst du die Texte dann auch genau possitionieren), welches du dann ausdruckst.

    Hab da auch noch eine Frage: Druckst du einfach das Abbild deiner Form, also sind die Textboxen dann auch auf dem Etikett sichtbar?


    MfG BlackHoleW13

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BlackHoleW13“ ()

    Für das zentrierte Zeichnen von Text schau dir mal diese Seite an.
    Mit der StringFormat.Alignment-Eigenschaft kannst du deinen String beliebig an dem beim Zeichnen anzugebenden Punkt ausrichten.

    Fiel Fergnügen
    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Danke für die schnelle Reaktion und die Begrüßung :)

    So sieht es momentan aus :

    VB.NET-Quellcode

    1. Private Sub bnDrucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnDrucken.Click
    2. PrintDocument1.Print()
    3. End Sub
    4. Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    5. e.Graphics.DrawString(tbEingabe.Text, New Font("Arial", 15, FontStyle.Bold), Brushes.Black, 10, 10)
    6. e.Graphics.DrawString(tbEingabe2.Text, New Font("Arial", 15, FontStyle.Bold), Brushes.Black, 10, 50)
    7. End Sub


    Ich drucke somit nur den Inhalt der Form bzw. der Textboxen da ja nur das auf die Etiketten darf.
    Nuja, da hast du schon 90% drin. Jetz nimm das Beispiel aus dem Link von mir und lege vor dem Zeichnen das Format fest. dann mußt du nur noch die Drawstring-Überladung mit der Formatangabe nutzen.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    So habe nun alles folgendermaßen angepasst und es scheint wie gewünscht zu funktionieren.

    Danke für die schnelle Hilfe. Man muss nur wissen wo man suchen muss :)

    VB.NET-Quellcode

    1. Public Class Form1Private Sub bnDrucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnDrucken.Click
    2. PrintDocument1.Print()
    3. End Sub
    4. Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    5. Dim displayRectangle As New Rectangle(New Point(40, 40), New Size(80, 80))
    6. ' Construct two new StringFormat objectsDim format1 As New StringFormat(StringFormatFlags.NoClip)
    7. Dim format2 As New StringFormat(format1)
    8. ' Set the LineAlignment and Alignment properties for
    9. ' both StringFormat objects to different values.
    10. format1.LineAlignment = StringAlignment.Near
    11. format1.Alignment = StringAlignment.Center
    12. format2.LineAlignment = StringAlignment.Center
    13. format2.Alignment = StringAlignment.Far
    14. e.Graphics.DrawString(tbEingabe.Text, New Font("Arial", 15, FontStyle.Bold), Brushes.Black, RectangleF.op_Implicit(displayRectangle), format1)
    15. End Sub
    16. Private Sub TextBox1_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, tbEingabe.TextChanged
    17. End SubEnd Class




    Wenn ich alles richtig verstehe muss ich nun für jede Textbox ein neues Rechteck definieren mit Größe und Position und darin dann den Inhalt der Textbox drucken ? Edit: habs gemacht und funktioniert. Vielen lieben Dank

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „lorina“ ()