Fehlende DataSource und DisplayMember in Listbox aus einem Theme

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

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Sekki.

    Fehlende DataSource und DisplayMember in Listbox aus einem Theme

    Guten Tag,

    ich habe ein ärgerliches Problem, welches ich nicht zu lösen weiß. Ich arbeite viel mit .DataSource und .DisplayMember in ListBoxen und wollte diesmal einfach nur ein schöneres Theme haben. Aus dem Theme Manager hier in VB.net habe ich dann einen schönen FlatStyle Theme gefunden, welcher folgenden Code hat:
    pastebin.com/4sg5iVnU (Ich habe es in einen Pastebin gepackt, da der Code für dieses Forum zu lang ist!)

    Folgendes Problem kommt nun auf mich zu. Ich habe keinen DataSource oder DisplayMember in diesem Theme. Könnte mir jemand helfen oder ihn direkt einfügen? Leider habe ich hierbei überhaupt keine Ahnung. Ich hoffe, jemand von euch kann mir hierbei so schnell wie möglich helfen. Mein jetziges Projekt sieht vollkommen schlecht aus und lässt sich kaum anschauen. Das FlatDesign hat mir von Anfang an gefallen. Ich hoffe, dass es ÜBERHAUPT eine Lösung gibt. Wie ich euch kenne, GIBT es eine Lösung. Ich nutze DataSource und DisplayMember um aus einer ListBox Einträge anhand einer Textbox zu filtern.

    Ich hoffe ebenfalls, dass es nicht viel verlangt ist.
    An dieser Stelle bedanke ich mich schon mal!
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    Woher hast du das Teil? Gabs da ne Doku dazu? Weil, durch 1.000.000.000 Zeilen Code wollte ich mich jetzt nicht durch scrollen um was passendes zu finden.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich habe das Theme von dieser Anwendung:
    Theme Manager

    Gibt es denn eine Möglichkeit, eine Suchfunktion für eine Listbox(die in Echtzeit die Einträge filtert) ohne DataSource zu erstellen? Ich brauche diesen "Control"(nicht sicher, ob sich das so nennt) unbedingt! Diese Listbox ist wie für mein Programm geschaffen.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    Push

    Ist es denn wirklich nicht möglich?.. :/
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    Gibts da keine gescheite Doku dazu? Ich hab da keinen bock den Quellcode zu durchsuchen. Wo (Webseite) hast du das Control runter geladen?

    Oder wird hier die normale Listbox genutzt und nen Skin drüber gelegt?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo
    Ich habe leider überhaupt keine Ahnung, was eine Doku ist.
    Ich habe diesen Skin wie gesagt von dem Theme Manager her..
    Ach, dass ist einfach nur doof.. Ich muss das ganze Projekt deshalb pausieren..
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    Eine Doku ist eine Dokumentation. Als z.B. Anleitung, Handbuch, Beipackzettel...

    Hast du denn was mit intellisense heraus gefunden? Gib mal im Code ein: NameDerListbox. (der Punkt ist wichtig). Dann schlägt dir deine IDE (Visual Studio) einige Dinge vor die du machen kannst. Gibts da nix in der Richtung DataIrgendwas?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo
    Ich habe: "DataBindings" gefunden.

    Ich habe übrigens weiterhin nach einer Lösung gesucht und eine gefunden, die nicht perfekt ist, aber vielleicht kannst du mir dort ja den entscheidenden Tipp geben..

    VB.NET-Quellcode

    1. ​Dim items() As String = IO.File.ReadAllLines("Names.txt", System.Text.Encoding.Default)
    2. Private Sub SearchTbx_TextChanged(sender As Object, e As EventArgs) Handles SearchTbx.TextChanged
    3. FlatListBox1.Clear()
    4. FlatListBox1.AddRange(items.Where(Function(s) s Like SearchTbx.Text & "*").ToArray)
    5. End Sub


    Ich habe diesen Code. Nur, wenn ich nun mit meiner TextBox suche, sucht er nur Einträge die mit dem Text BEGINNEN. Jedoch brauche ich, eine Art.. ".contains".

    Der Code ist klein und klappt an sich wirklich gut, nur dass wäre halt das Problem noch.
    Wenn das Schwachsinnig für dich ist und du was besseres kennst, dann fahre ruhig fort. Jedoch ist diese Methode anscheinend echt schnell und sehr sehr klein gehalten.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

    VB.NET-Quellcode

    1. FlatListBox1.AddRange(items.Where(Function(s) s Like SearchTbx.Text & "*").ToArray)

    Such nach allem was mit dem Text beginnt also nach Text*. "*" Ist ja ein Platzhalter für beliebige anzahl Zeichen
    Hast du mal versucht *Text* zu suchen?

    VB.NET-Quellcode

    1. FlatListBox1.AddRange(items.Where(Function(s) s Like "*" & SearchTbx.Text & "*").ToArray)

    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @Schamash
    Super! Das funktioniert einwandfrei! Ich habe nicht gewusst, das des so überhaupt geht.
    Ein Problem bleibt nun stehen. Und zwar bleibt die Listbox beim ersten mal öffnen der Form komplett leer, bis ich etwas eintippe. Nachdem ich das eingetippte lösche, ist auch die ganze Liste zu sehen. Wie kann ich das fixxen?

    Edit//
    Ich habe nun in die Form geschrieben, dass er die Liste laden soll. Ist das aber die schnellste Lösung?
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    Wenn du das Textfeld löschst suchst du nach ** also eine Beliebigen anzahl von Zeichen. Das trifft also immer und die gesamte Liste wird geladen.
    Wenn du nur im TextChange Event den Aufruf zu Suchen nach Treffern hast ist es verständlich das die Box beim Starten leer ist, es gab ja noch kein TextChange event.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Klingt logisch!

    Ich bedanke mich bei euch beiden für eure Hilfe!
    Ich frage hier mal direkt nach der nächsten Hilfe, vielleicht wisst ihr beiden ja, wie ich dies ebenfalls lösen kann:

    Die neue ListBox hat keinen "SelectedIndexChanged" Event. Kann man das auch anders machen? Ich möchte, dass nachdem ich ein Item gewählt habe, er EINMAL eine Funktion ausführt. Ist das ohne dem Event möglich? Das sind alle vorhandenen Events:
    https://i.gyazo.com/1d063a5d8911de2fe556bc59af162d03.gif

    Ich habe es erstmal mit einem Timer gelöst.. Ist des elegantgenug?

    VB.NET-Quellcode

    1. ​If Not FlatListBox1.SelectedItem = currentSelected Then
    2. currentSelected = FlatListBox1.SelectedItem
    3. MsgBox(currentSelected)
    4. End If
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

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