Form Ausdruck, Formgröße automatisch an Seitengröße anpassen. PrintDialog "überdeckt" die auszudruckende Form

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von JU84553Hgd.

    Form Ausdruck, Formgröße automatisch an Seitengröße anpassen. PrintDialog "überdeckt" die auszudruckende Form

    Hallo,

    ich möchte eine Form ausdrucken. Eigentlich ganz einfach. Mit der Toolbox-Eigenschaft "Printform" ist der Ausdruck möglich und funktioniert auch.



    Jetzt habe ich zwei Probleme:

    1. Problem.

    Ich geben automatisch die Seitenausrichtung als Querformat vor, da sonst meine Form nicht auf die Seite (DIN A4 passt). Das geht aber auch nur, wenn die Seitenränder entsprechend klein sind.

    Wie kann die die Formgröße automatisch an die Papiergröße anpassen?



    2. Problem.

    Bevor die eigentliche Druckfunktion "Me.PrintForm.Print()" aufgerufen wird, rufe ich noch die Funktion "PrintDialog" auf, um einen Drucker und die Anzahl der Ausdrucke festlegen zu können. Nun tritt das Problem auf, dass der Dialog "PrintDialog" noch immer auf dem späteren Ausdruck zu erkennen ist, da er eine Ebene über der eigentlichen Form liegt! Wie kann ich das lösen?



    Vielen Dank



    Takahara

    Ausdruck falsch


    If
    Graph.PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

    'Druckernamen übergeben

    Graph.PrintForm1.PrinterSettings.PrinterName = Graph.PrintDialog1.PrinterSettings.PrinterName

    Threading.Thread.Sleep(2000)

    'Aufruf der Druckfunktion

    Graph.PrintForm1.Print()
    Else : GoTo EndPrint
    EndIf

    Ich habe hier mal meinen Code gepostet. Leider habe ich immer noch "Reste" vom PrintDialog (verschwommen) auf meiner Form (Graph) die ich drucken will. Theoretisch verstehe ich die Zeile "Threading.Thread.Sleep(2000)". Das Systeme soll für die angegebene Zeit (2000 Millisikunden) warten. Leider wird die erforderliche Wirkung nicht erzielt. Die Form die ich ausdrucken will, enthält immer noch Fragmente des DruckDialoges. Kann mir evtl. jemand sagen zu welchem Zeitpunkt die Bildschirmkopie erstellt wird, bzw. wie ich das PrintDialogfenster schließen kann?

    Vielen Dank

    Takahara
    Da musst Du das verpönte

    VB.NET-Quellcode

    1. Application.DoEvents()

    nehmen, das gibt der App Zeit, sich zu "regenerieren".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank.



    Mit Application.DoEvents() funktioniert es bei mir.



    Ich hab allerdings noch eine Frage. Man kennt es ja aus jedem Programm. Durch anklicken des Maximierung-Bottons wird das Fenster (Form) automatisch an die aktuelle Auflösung des Bildschirmes angepasst.

    Gibt es eine Möglichkeit, die Form mit einer Befehlszeile auf die maximale Größe anzupassen und dabei dir Verhältnisse der Elemente auf der Form beizubehalten?

    Gruß

    Takahara