Visual Basic 2010 Express Einen eigenen Task-Manager für mein Programm erstellen

  • VB.NET

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

    Visual Basic 2010 Express Einen eigenen Task-Manager für mein Programm erstellen

    hallo liebe comunnity,

    ich habe ein Programm wo mehrere Formen dynamisch erstellt werden. Auf der Startform möchte ich gerne eine Listbox haben die alle offenen Fenster meines Projektes auflistet dann
    habe ich noch einen Button der das ausgewählte Fenster schließen soll.

    ungefähr so: siehe Anhang

    danke im vorraus für eure Hilfe :)
    Bilder
    • Unbenannt.png

      247,16 kB, 613×627, 24 mal angesehen

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

    @ClonkAndre Wo ist das Problem?
    Sieh Dir mal die Property Application.OpenForms an.
    Application.OpenForms(0) ist das MainWindow.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Joa das wäre ne gute Idee ich hab jetz mal einen einfachen Code geschreiben das die offenen Formen anzeigt:

    VB.NET-Quellcode

    1. For Each forms As Form In My.Application.OpenForms()
    2. ListBox1.Items.Add(forms.Name)
    3. Next


    doch wie mache ich es jetzt das die Liste automatisch aktualisiert wird wenn eine neue Form geöffnet wird? (der Code ligt im Moment im Form Load)
    achja und wie mache ich es so das ich ein ListBoxItem auswählen kann und dann die entsprechende Form schließen kann?

    Edit:

    Wenn ich den Code in einem Timer setzen würde wäre das nicht so gut weil der Timer das ausgewählte Item immer wieder deselectiert weil der ja die Liste aktualisiert.

    ClonkAndre schrieb:

    weil der Timer das ausgewählte Item immer wieder deselectiert
    Wie wäre es, wenn Du Dir merkst, welches Item selektiert ist und es hinterher wieder selektierst?
    Mit dem Index in der Liste hast Du ein Objekt vom Typ Form, auf das kannst Du die Methode .Close() anwenden.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Sooo perfekt danke @RodFromGermany deine Idee war sehr hilfreich!
    Funktioniert jetzt perfekt ich poste hier mal meinen fertigen Code falls andere auch sowas machen möchten:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private selected_listboxitem As String
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. task_refresh_tmr.Start()
    4. End Sub
    5. 'Interval ist auf 500
    6. Private Sub task_refresh_tmr_Tick(sender As System.Object, e As System.EventArgs) Handles task_refresh_tmr.Tick
    7. Try
    8. selected_listboxitem = ListBox1.SelectedItem
    9. ListBox1.Items.Clear()
    10. For Each frm As Form In My.Application.OpenForms
    11. ListBox1.Items.Add(frm.Name)
    12. ListBox1.SelectedItem = selected_listboxitem
    13. Next
    14. Catch ex As Exception
    15. 'Fehler hier
    16. End Try
    17. End Sub
    18. Private Sub close_form_btn_Click(sender As System.Object, e As System.EventArgs) Handles close_form_btn.Click
    19. Try
    20. For Each frm As Form In My.Application.OpenForms
    21. If frm.Name = ListBox1.SelectedItem.ToString Then
    22. frm.Close()
    23. End If
    24. Next
    25. Catch ex As Exception
    26. 'Fehler hier
    27. End Try
    28. End Sub

    @ClonkAndre Wenn Du alle Deine Forms von einer gemeinsamen Basisklasse ableitest, kannst Du da die Information abgreifen, dass eine neue Form erstellt wurde, das spart den Timer.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!