Hallo zusammen,
ich komme leider wieder einmal mit einem Druckproblem, das ich aber noch nirgends gelöst gefunden habe.
Vorweg: Das mehrseitige Drucken funktioniert.
Zuerst erfolgt eine Anzeige in einem abgeleiteten PrintPreviewDialog (Class MyPrintPreviewDialog)
Allerdings funktioniert die Auswahl bestimmter Seiten im PrintDialog nicht ( AllowSomePages = True, FromPage und ToPage sind gesetzt ?!)
Und die Anzeige von CurrentPage (AllowCurrentPage = True) gibt es im PrintDialog gar nicht ?!
Egal, welche Einstellung der User im PrintDialog trifft, es werden immer alle Seiten gedruckt.
Bitte Hilfe, Danke im Voraus.
ich komme leider wieder einmal mit einem Druckproblem, das ich aber noch nirgends gelöst gefunden habe.
Vorweg: Das mehrseitige Drucken funktioniert.
Zuerst erfolgt eine Anzeige in einem abgeleiteten PrintPreviewDialog (Class MyPrintPreviewDialog)
Allerdings funktioniert die Auswahl bestimmter Seiten im PrintDialog nicht ( AllowSomePages = True, FromPage und ToPage sind gesetzt ?!)
Und die Anzeige von CurrentPage (AllowCurrentPage = True) gibt es im PrintDialog gar nicht ?!
Egal, welche Einstellung der User im PrintDialog trifft, es werden immer alle Seiten gedruckt.
Bitte Hilfe, Danke im Voraus.
VB.NET-Quellcode
- Public Class MyPrintPreviewDialog
- Inherits PrintPreviewDialog
- Private btn As ToolStripButton
- Private UpDown As NumericUpDown
- Public Sub New()
- 'Toolstrip finden
- Dim ts As ToolStrip = CType(Controls.Find("toolstrip1", True)(0), ToolStrip)
- 'Drucken Button finden
- btn = CType(ts.Items.Item(0), ToolStripButton)
- 'Neuen Drucken Button mit Handler erstellen
- Dim b As New ToolStripButton("", btn.Image, AddressOf PrintClick) With {.Name = "DruckButton"}
- 'Originalen Button entfernen
- ts.Items.RemoveAt(0)
- 'Neuen Button hinzufügen
- ts.Items.Insert(0, b)
- 'NumericUpDown suchen und auf UpDown setzen
- For Each c As Object In ts.Items
- If TypeOf c Is ToolStripControlHost Then
- 'Dim tsch As ToolStripControlHost = CType(c, ToolStripControlHost)
- ' Dim co As Control = tsch.Control
- UpDown = CType(CType(c, ToolStripControlHost).Control, NumericUpDown)
- End If
- Next
- End Sub
- Private Sub PrintClick(ByVal sender As Object, ByVal e As System.EventArgs)
- Dim pd As New PrintDialog With {
- .PrinterSettings = Document.PrinterSettings,
- .AllowCurrentPage = True,
- .AllowSelection = False,
- .AllowSomePages = True,
- .AllowPrintToFile = False,
- .Document = Document
- }
- If pd.ShowDialog = DialogResult.OK Then
- ' Dem printDocument die neuen Einstellungen zuweisen und Drucken
- ' starten
- ' Document.PrinterSettings = pd.PrinterSettings
- Document = pd.Document
- ' btn.PerformClick()
- Select Case Document.PrinterSettings.PrintRange
- Case PrintRange.AllPages
- Console.WriteLine("alles drucken")
- Case PrintRange.CurrentPage
- Console.WriteLine("aktuelle Seite drucken")
- Document.PrinterSettings.FromPage = CInt(UpDown.Value)
- Document.PrinterSettings.ToPage = CInt(UpDown.Value)
- 'TODO somePages funktioniert nicht
- Case PrintRange.SomePages
- Console.WriteLine("ein paar Seiten drucken")
- Document.PrinterSettings.FromPage = 2 'nur zu Testzwecken
- Document.PrinterSettings.ToPage = 3
- End Select
- 'Console.WriteLine("fromPage=" & Document.PrinterSettings.FromPage.ToString)
- Document.Print()
- Close() ' Den PrintPreviewDialog schließen
- End If
- End Sub
- Private Sub MyPrintPreviewDialog_Load(sender As Object, e As EventArgs) Handles Me.Load
- Location = My.Settings.DruckVorschauFormPosition
- If Document.DefaultPageSettings.Landscape Then
- Size = New Size(900, 600)
- Else
- Size = New Size(600, 900)
- End If
- End Sub
- Private Sub MyPrintPreviewDialog_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
- My.Settings.DruckVorschauFormPosition = Location
- My.Settings.Save()
- End Sub
- Private Sub MyPrintPreviewDialog_MouseWheel(sender As Object, e As MouseEventArgs) Handles Me.MouseWheel
- Dim v As Decimal = e.Delta / 120
- 'If UpDown.Value + v < 0 Then
- ' UpDown.Value = 0
- ' Exit Sub
- 'End If
- 'If UpDown.Value + v > 100 Then
- ' UpDown.Value = 100
- ' Exit Sub
- 'End If
- UpDown.Value -= v ' minus, weil "hinunterblättern"
- End Sub
- End Class
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ChristianL“ ()