Zugriff auf eigene WinForms in VB.NET

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von HansiMausi.

    Zugriff auf eigene WinForms in VB.NET

    Hallo miteinander,

    ich selbst nutze die Visual Studio Community 2019 und würde mich als fortgeschrittener Anfänger bezeichnen.

    Derzeit bin ich dabei, ein Programm zum "Aufspüren" von Duplikaten in einer mp3-Sammlung zu schreiben.

    Nun zu meinen derzeit 2 Problemen.

    1. Wie bekomme ich in eine Progress-Bar den aktuell abgearbeiteten Stand (z.B. als Prozent-Angabe) als Text hinein.
    Den wachsenden Balken hinzubekommen, ist ja kein Problem.

    2. Subroutinen, die ich in mehreren Einzelformularen benutze, habe ich in einem Modul, nennen wir es modX, als PUBLIC untergebracht, darunter auch die Sub, nennen wir sie MP3Zahl, zum Zählen der vorh. mp3-Dateien.
    Von einer Form (frmY, enthält u.a. Label1) wird auf die sub MP3Zahl zugegriffen. Dabei soll auf frmY das label1 der aktuelle Zählstand angezeigt werden.

    Bisher sieht mein Konstrukt für MP3Zahl in modX schematisch so aus:

    frmY.label1=string.empty
    Zählschleife Beginn
    frmY.label1.Refresh()
    Zählanweisung(en)
    frmY.Label1.Text=join({AktAnzahl.ToString," bisher gefunden}," ")
    Zählschleife Ende

    Leider Gottes tut sich beim Label1 auf frmY NICHTS.

    Woran kann das liegen?

    Ich bin für jeden Hinweis im Voraus dankbar. :)

    Sorry, ich hatte zu schnell auf den "Absenden-Knopf" gedrückt.
    Hier der originale Quelltext:

    Try
    MP3Files.Clear()
    frmSoundIDAuslesen.Label3.Text = ""
    MyFiles = Directory.GetFiles(OV, "*.mp3", searchOption:=IO.SearchOption.AllDirectories)
    For I = 0 To MyFiles.LongLength - 1
    MP3Files.Add(MyFiles(I))
    frmSoundIDAuslesen.Label3.Refresh()
    frmSoundIDAuslesen.Label3.Text = "Es werden " & I.ToString & " Dateien gezählt"
    Next
    Catch ex As FileNotFoundException
    Mitteilung("Keine AUDIO-Dateien gefunden")
    End Try

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

    Hi, und willkommen auf vbp!

    Ich hab hier mal ein Video gemacht zur benutzung von vbParadise:
    Bischen veraltet, aber das Prinzip glaub noch erkennbar.
    Und dann täte ich vorschlagen:
    Poste richtige Methoden, komplett. Zu Methoden, oder wie hier: "verlorene Code-Schnipsel" kann man sich nicht sinnvoll äussern (so gut wie nie).

    Soweit zur Form, jetzt zum Inhalt:
    Auch da: schreib dir richtige Functions, um dein Problem zu lösen, also Function(???, ??) As ???, und da übergibst du Input, und bekommst den Output zurück.
    Das Form kann diese Methode dann aufrufen, und die Rückgabe nutzbringend verwenden.

    Niemals(!!!) aus einem Modul in ein Form grabschen.
    @HansiMausi Ebenfalls: Willkommen im Forum. :thumbup:
    Die Progressbar mit Zahl drinne gibt es als solche nicht, die musst Du selbst designen.
    Unter C++ ging das noch einfach, da hast Du die Zahl hingeschrieben und den Balken mit XOR darübergemalt, da war der Text in der jeweils anderen Farbe zu sehen.
    Der Balken selbst sieht dann aber müllig aus.
    ====
    Alles, was in eine Form malt, gehört in die Form. Wenn da ein Wert von außen kommt, mach das per Event.
    Module sind dann gut, wenn sie eine Funktionalität in sich vollständig abhandeln. Da die Instanz einer Form reinzureichen ist die verkehrte Richtung.
    Lass das Modul was tun, werte das Resultat aus und stell es dar.
    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!
    Hallo,

    erst mal vielen Dank für die Antworten.
    Die darin gegebenen Ratschläge werde ich künftig beherzigen.
    Nach eingehender Quellcodeanalyse (herrliches Wort!) habe ich festgestellt, dass die von mir genannte Zählroutine nur im Rahmen der einen aufrufenden Form verwendet wird;
    somit ist die Darstellung der lfd. Nummer praktisch kein Problem mehr.

    Nochmals vielen Dank!