Default papersize in PrintDialog festlegen [gelöst] - endlich!

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Default papersize in PrintDialog festlegen [gelöst] - endlich!

    Titel sagt eigentlich schon alles. Folgenden Befehl hab ich auf verschiedenen Seiten gefunden:
    PrintDialog1.PrinterSettings.DefaultPageSettings.PaperSize.RawKind = System.Drawing.Printing.PaperKind.A5

    Der Drucker hält allerdings starr an A4 als Standardpapier fest, obwohl A5 als Option eingetragen ist. Hat jemand ne Idee, wie ich das ändern kann?
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Nils_Kr schrieb:

    A5
    Das kommt offensichtlich nicht an.
    Was passiert, wenn Du das per Hand einstellst?
    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!
    Wenn ich A5 einstelle, dann nimmt der Drucker auch A5-Papier. Es soll halt in A5 gedruckt werden, ohne dass man das Format manuell auswählen muss.

    Ps: Printdocument1.DefaultPageSettings.PaperSize.RawKind = System.Drawing.Printing.PaperKind.A5 wird ebenfalls ignoriert.

    Ps2: Printdocument1.DefaultPageSettings.Landscape = True funktioniert. Dann ist direkt das Format auf Quer gestellt.

    Update: Die Frage wurde hier schon ein paarmal gestellt, allerdings nie richtig beantwortet. Die RawKind-property hat keinerlei Einfluss auf die Standardpapiergröße, da kann
    man solange Sachen eintragen wie man will, es ändert sich nichts.

    Hiermit funkionierts:

    VB.NET-Quellcode

    1. Dim PSizes As Printing.PrinterSettings.PaperSizeCollection = Printdocument1.PrinterSettings.PaperSizes
    2. Dim I As Integer
    3. For I = 0 To PSizes.Count - 1
    4. If PSizes(I).RawKind = Printing.PaperKind.A5 Then Exit For
    5. Next
    6. If I < PSizes.Count Then
    7. Printdocument1.DefaultPageSettings.PaperSize = PSizes(I)
    8. Else
    9. MessageBox.Show("Paper not found.")
    10. End If


    Microsoft hat sich bei der Druckfunktion nicht gerade mit Ruhm bekleckert.
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Nils_Kr“ ()

    Keine Ahnung, unter den zahlreichen Lösungsversuchen die sich im Internet befinden, ist dieser der mit Abstand am kürzeste, der gleichzeitig noch halbwegs sinnvoll aussieht.
    Ich werd gleich mal ausprobieren, ob nicht auch Kind ohne Raw funktioniert.

    E: Funktioniert auch.
    Option strict = on

    If it's stupid and it works it ain't stupid.
    echt - was besseres bringt das INet nicht?
    Da kann man ja Gebühren zurückverlangen! ;)

    VB.NET-Quellcode

    1. Private Sub SetDefaultPapersize(pDoc As PrintDocument, value As PaperKind)
    2. Dim psz = pDoc.PrinterSettings.PaperSizes.Cast(Of PaperSize).FirstOrDefault(Function(ps) ps.Kind = value)
    3. If psz Is Nothing Then Throw New NotSupportedException("Paperkind." & value & " not found")
    4. pDoc.DefaultPageSettings.PaperSize = psz
    5. End Sub

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