Druckerwarteschlange leeren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von tron25.

    Vielen Dank. Es funktioniert jetzt:

    VB.NET-Quellcode

    1. Try
    2. Using Druckserver As New LocalPrintServer()
    3. Dim myPrintQueues As New PrintQueueCollection
    4. Dim PrQu As PrintQueue = Druckserver.GetPrintQueue(Brailledrucker)
    5. If Not String.IsNullOrEmpty(Brailledrucker) Then
    6. Using Druckauftraege As PrintJobInfoCollection = Druckserver.GetPrintQueue(Brailledrucker).GetPrintJobInfoCollection
    7. If Druckauftraege.Count() > 0 Then
    8. FrageFormular.Text = My.Resources.Frage
    9. FrageFormular.FrageLabel.Text = String.Format(My.Resources.Druckauftraege_vorhanden_loeschen, Brailledrucker)
    10. FrageFormular.ShowDialog()
    11. If FrageFormular.Text = "Ja" Then
    12. LocalPrintServer.DeletePrintQueue(Brailledrucker)
    13. End If
    14. FrageFormular.Close()
    15. End If
    16. End Using
    17. End If
    18. End Using
    19. Brailleprinter.SendToPrinter(Brailledrucker, Inhalt, Brailledrucker)
    20. Catch Fehler As Exception
    21. InfoFormular.Text = My.Resources.Hinweis
    22. InfoFormular.InfoLabel.Text = My.Resources.Drucker_nicht_vorhanden_ausgeschaltet
    23. InfoFormular.ShowDialog()
    24. End Try

    Ich habe einige Formulare selbst erstellt, statt Standartformulare zu verwenden, da ich hier die Größe der Schaltflächen und Texte selbst anpassen möchte. Das Programm soll auch für sehbehinderte optimiert werden, die größere Beschriftungen benötigen.
    Ich glaube nicht, dass die Größe einer Schaltfläche die Dialogfunktionalität einschränken würde. Aber ich weiß ja nicht genau worüber wir da reden.

    In deinem Code hast du einige Variablen die nicht wirklich sinnvoll genutzt werden. Druckauftraege muss du doch gar nicht holen, wenn du sowieso alles löschen willst. Bei den anderen Variablen kommts drauf an ob du die woanders noch verwendest, falls nicht probier das:

    VB.NET-Quellcode

    1. Try
    2. FrageFormular.Text = My.Resources.Frage
    3. FrageFormular.FrageLabel.Text = String.Format(My.Resources.Druckauftraege_vorhanden_loeschen, Brailledrucker)
    4. FrageFormular.ShowDialog()
    5. If FrageFormular.Text = "Ja" Then
    6. LocalPrintServer.DeletePrintQueue(Brailledrucker)
    7. End If
    8. FrageFormular.Close()
    9. Brailleprinter.SendToPrinter(Brailledrucker, Inhalt, Brailledrucker)
    10. Catch Fehler As Exception
    11. InfoFormular.Text = My.Resources.Hinweis
    12. InfoFormular.InfoLabel.Text = My.Resources.Drucker_nicht_vorhanden_ausgeschaltet
    13. InfoFormular.ShowDialog()
    14. End Try

    "Druckauftraege" habe ich, um festzustellen, ob Druckaufträge vorhanden sind. Wenn nicht, ist .Count = 0.

    Die Größe von Schaltflächen haben zwar keine Auswirkung auf die Funktionalität, können aber von sehbehinderten besser erkannt und gelesen werden.

    Hier mal ein Video zu meiner Software:

    Allerdings ist das Video schon etwas älter und das Programm hat sich seit damals weiterentwickelt.
    Und was passiert wenn Count = 0 ist und du trotzdem löscht? Nix, also warum prüfen

    Guck ma das hier. DialogResult
    Die Schaltflächen kannst du trotzdem gestalten wie du willst. In dem Link wird als Beispiel eine MessageBox hergenommen, die ist natürlich sehr eindimensional. Du kannst das aber auch in deinem FrageFormular nutzen.
    Jeder Button hat die Eigenschaft DialogResult. Und wenn der geklickt wird kommt ein Yes zurück oder ein No, ein OK oder ein Cancel, ganz ohne irgendwelche Strings zu nutzen.

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

    Ich habe mir den Beitrag angeschaut und meinen Code dementsprechend angepaßt. Eine Frage bleibt da noch:

    VB.NET-Quellcode

    1. FrageFormular.AlleDateienCheck.Visible = True
    2. If FrageFormular.ShowDialog = DialogResult.Yes Then
    3. If FrageFormular.AlleDateienCheck.Checked Then

    Kann ich auf Elemente des Formulares noch zugreifen, wenn es geschlossen ist?
    Da bin ich nicht sicher, normalerweise nicht, denn schließen heißt auch entsorgen.
    In deinem Fall aber wohl schon:
    The two conditions when a form is not disposed on Close is
    when (1) it is part of a multiple-document interface (MDI) application,
    and the form is not visible; and (2) you have displayed the form using ShowDialog. In these cases, you will need to call Dispose manually to mark all of the form's controls for garbage collection.

    Da müsste man sich genauer anschauen, was du vorhast.
    Ich habe beispielsweise eine Form, in der der Benutzer angibt, ob alle Dateien gelöscht werden sollen. Dies geschieht über eine Checkbox auf dieser Form. Wenn der Benutzer dann auf "Ja" klickt, soll das Formular unsichtbar gemacht bzw. geschlossen werden. Danach soll, je nach dem Status der Checkbox etwas gemacht bzw. nicht gemacht werden. So, wie ich das aus deinem Zitat verstanden habe, müßte es funktionieren. Das Form sollte dann mit "Dispose" nachträglich vernichtet werden. Ich werde es später mal versuchen und Bescheid geben.