Zwei Listboxen ein Ergebnis

  • VB.NET

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

    Zwei Listboxen ein Ergebnis

    Hi leute,

    ich habe Zwei Listboxen wo alle meine txt datein aus Odner YX angezeigt werden in der Linken Listbox sind die Datein mit vollen Pfad und im Rechten werden die Datein nur angezeigt ohne Pfad.

    etwa so !!

    VB.NET-Quellcode

    1. Dim file() = New IO.DirectoryInfo(pfad).GetFiles(".txt", IO.SearchOption.AllDirectories)
    2. Dim fileb() = IO.Directory.GetFiles(pfad, ".txt", IO.SearchOption.AllDirectories)
    3. ListBox1.Items.AddRange(file)
    4. ListBox2.Items.AddRange(fileb)


    In beiden wird das selbe Ergebnis gezeigt, nur will ich das wenn ich in Listbox2 die eine bzw. mehrere anwähle (Selectiere) soll es Zeitgleich bei Listbox1 geschehen.

    Danke euch jetzt schon für eure Hilfe. :love:
    Stichwort SelectedIndexChanged und da drin eine ForEach-Loop, die die Pfade vergleicht und bei Übereinstimmungen die Selection in der anderen Box ändert.
    Aber!
    1. Keine Strings in die File-Listbox!
    2. Was soll das werden, wenn's fertig ist? Du hast doch das Gleiche in Smaragdgrün in beiden Boxen: Die gleichen Dateipfadstrings.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke @VaporiZed :D

    Ja, dass hab ich auch schon gedacht bin auch jetzt schon so weit im SelectedIndexChanged...

    Bujaka!!!

    VB.NET-Quellcode

    1. Dim i As Integer = ListBox1.SelectedIndex
    2. i = ListBox1.SelectedIndex
    3. Dim item As String
    4. item = ListBox1.SelectedItem.ToString()
    5. If i > -1 Then
    6. ListBox2.SetSelected(i, True)
    7. End If


    soweit läuft der Schmarn... aber wenn ich die anderen Selectiere in Listbox1 dann werden die in 2 zusätzlich seltectiert... Hinweis ich will die Boxen auf "MultiExtended" haben um mehere auswählen zu können.

    zu dein 2tens:
    ja :/ .... ist einfach so ein gedanke ... ich war vorher soweit das ich eine Textdatei in einer Listbox hatte ohne kompletten Pfad ... dann wollt ich aber das man diese Textdatei mit pfad findet wenn man die anklickt und dies zeigte er mir nicht ausser den Dateinamen... Deshalb Zwei boxen... so kann ich es auch erreichen das er sich die ausgewählten Datein bzw. pfade merkt und speichert.

    hoffe kannst mir trotzem weiter helfen :rolleyes:

    VBHunter schrieb:

    soweit läuft der Schmarn
    Öhm... ja.
    Zeile#2 kann weg, genauso wie #4 und #5. Zumindest wenn man den Code so ansieht. Man sieht zwar keine Schleife, geschweige denn eine vollständige Sub, aber scheint wohl nicht relevant zu sei, oder?

    VBHunter schrieb:

    aber wenn ich die anderen Selectiere in Listbox1 dann werden die in 2 zusätzlich seltectiert...
    Was ist Sollzustand und was ist Wunschzustand? Bitte ohne Code beschreiben.

    Zu Deiner Anmerkung, was Du mal hattest und so: Schau Dir bitte überhaupt mal den in Post#2 verlinkten Thread an. Wenn Du statt Strings eben FileInfos drinnen hast, kannst Du nen Dateinamen anzeigen und trotzdem auf den kompletten Pfad und all die ganzen FileInfos zugreifen - was Du ja offensichtlich haben willst! Also: verlinkten Thread reinziehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VBHunternull
    Mach dir eine Bindingssource und das nur mit FileInfo (also das erstere in Zeile1 in #1)
    Weise die beiden Listboxes (Datasource) zu, wobei du der ersten Listbox Displaymember = Name und der zweiten Listbox Displaymember = FullName noch angibst.
    SelectionMode muss MultiSimple sein.
    Nun beiden Listbox das Event SelectedIndexChanged setzen
    Hierein extrahierst die Idexes (Selectierte Items) der entsprechenden Listbox und gibst die per SetSelected der anderen Listbox hinzu
    Eventuell müssen die beiden Events gegeneinander verriegelt werden.

    Freundliche Grüsse

    exc-jdbi
    @exc-jdbi Nicht ganz.
    @VBHunter Ganz simpel:
    Im Designer machst Du .SelectionMode = One

    VB.NET-Quellcode

    1. Dim pfad = "c:\temp"
    2. Dim files() = New IO.DirectoryInfo(pfad).GetFiles("*.jpg", IO.SearchOption.TopDirectoryOnly)
    3. ListBox1.DataSource = files
    4. ListBox1.DisplayMember = "FullName"
    5. ListBox2.DataSource = files
    6. ListBox2.DisplayMember = "Name"
    Feddich.
    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!
    @RodFromGermany
    Komisch weil genau auf diese Art funkst es bei mir nicht.

    Ok. Es war wohl spät gestern Abend.
    Nur Listbox2 soll mehrfach markiert werden, und die dann in der Listbox1 angezeigt werden.
    Das vereinfacht das Ganze noch ein bisschen. Ich habe das gestern mit einer Bindingsource
    umgesetzt.


    .SelectionMode muss bei beiden auf MultiSimple sein. Die ListBox2 besitzt ein SelectedIndexChanged-Event so funktionierts bestens.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub InitializeBinding()
    2. Dim spath = Path.Combine(Application.StartupPath, "DeinVerzeichnis")
    3. Dim fi = New DirectoryInfo(spath).GetFiles("*.txt", SearchOption.AllDirectories)
    4. Dim bs = New BindingSource(fi, Nothing)
    5. Me.ListBox1.DataSource = bs.DataSource
    6. Me.ListBox1.DisplayMember = "FullName"
    7. Me.ListBox1.SelectionMode = SelectionMode.MultiSimple 'Designer
    8. Me.ListBox2.DataSource = bs.DataSource
    9. Me.ListBox2.DisplayMember = "Name"
    10. Me.ListBox2.SelectionMode = SelectionMode.MultiSimple 'Designer
    11. End Sub
    12. Public Sub New()
    13. MyBase.New
    14. Me.InitializeComponent()
    15. Me.InitializeBinding()
    16. Me.BStart = True
    17. End Sub


    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „exc-jdbi“ ()

    @exc-jdbi OK, bei Multi-Selektierung ist da noch was zu tun, das hab ich implizit geklemmt (den Default genommen).
    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!