Announcement

Collapse
No announcement yet.

ListBox.Items.Remove("element") funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ListBox.Items.Remove("element") funktioniert nicht

    Hallo Zusammen

    Ich habe ein Listbox mit ein StringBuilder ausgefühlt ,der String Buider Selbst hat mehrere String :Code
    Code:
     String  menge = "element";
     StringBuilder sb =new StringBuider ();
     sb.Append(Menge)
     sb.Append(" ")
     sb.Append("element2");
     sb.Append ("element3");
     listBox1.Items.Add(sb)//bis hier alles ist klare
    Dann versucht ich wieder in ein andere Function der selbe Element wenn er ausgewäht ist zu loeschen
    Code:
     String R =listbox1.SelectdItem.Tostring()
     StringBuider s = new StringBuilder();
     s.Append ("R");
     listbox1.Items.Remove(R);//Funktioniert nicht
    :

    Mit ein einfach String funktioniert alles normal aber da ich meine Liste mit mehrere element hinteraneinder ausfühlen sollte benutze ich den stringBuilder aber es funktioniert halt nicht ..

    danke ..

  • #2
    Hallo,

    wenn du den StringBuilder als Datenquelle für die Listbox verwendest dann ist 1 Objekt gebunden und das willst du ja nicht. Gewollt wird wohl sein dass mehrer String-Objekte gebunden werden.

    D.h. verwende hierfür nicht den StringBuilder sonder die Strings als eigene Objekte.

    Der StringBuilder ist dann vorteilhaft wenn viele Strings zu einem großen String zusammengefügt werden sollen.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Danke Gfoild

      aber ich muss auch bei mir glaube ich viele String in einem GroBen String zusammenfügen Ein element der List ist zum beispiel "1" "cl" "Wein" ,diese 3 Element sind als einzel String aber in meine List Box ein element der Erste zumbeispeil deswegen benutz ich hier Stringbuilder ...

      Comment


      • #4
        Hallo,

        ganz allgemein: Wie sollen denn die Einträge in der ListBox aussehen?


        Ein StringBuilder wäre dann angebracht wenn zB
        [highlight=c#]
        Stringbuilder sb = new StringBuilder();
        for (int i = 0; i < 1000; i++)
        sb.Append("bla bla" + i);
        [/highlight]


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          aber ich muss auch bei mir glaube ich viele String in einem GroBen String zusammenfügen Ein element der List ist zum beispiel "1" "cl" "Wein" ,diese 3 Element sind als einzel String aber in meine List Box ein element der Erste zumbeispeil deswegen benutz ich hier Stringbuilder ...
          Solltest du dann nicht lieber ein Grid (z.B. das DataGridView) benutzen? Dann musst du nichts umständlich zusammenfügen und wieder auseinander nehmen.

          Ein zusammengefügter String (auch im StringBuilder) ist ein String und der weiß nichts aus welchen Einzelstrings er mal entstanden ist. Wenn du den string zerlegen willst brauchst du eine eindeutige Regel (z.B in Form eines Trennzeichen wie z.B. einem Leerzeichen). Dann musst du den string aber nach der Regel zusammensetzen und dementsprechend als Umkehrfunktion auch wieder entsprechend auseinandernehmen. Das ist aber unabhängig davon ob man StringBuilder oder string verwendet.

          Comment


          • #6
            also so wie oben :
            String menge = "element";
            StringBuilder sb =new StringBuider ();
            sb.Append(Menge)//von ein Listbox ausgewählt
            sb.Append(" ")//
            sb.Append("element2");//von ein andere ListBox ausgewählt
            sb.Append ("element3");
            listBox1.Items.Add(sb)
            Der Benutzer Wählt direkt die Element von unterchiedliche ListBox und dann muss ich diese Element als eine also ein Grosse String zusammenfügen da diese alle in ein element der andere listbox gehören :Beispiel "2 Cl Cola" Alle diese Element von unterchiedliche ListBox ausgewählt ...
            Dke ..

            Comment


            • #7
              Hallo Ralf

              danke zuerst aber ich muss leider der Listbox benutzen .Ich kann immer noch nicht der String oder StringBuider (Zusammemgesezt String )zerlegen(loeschen) aber ws ich dazu nicht verstehe ist mit der Funktion :MessageBox.show("Ausgewahlte_element") bekommt ich genau der zusammengesezte String ..also es sollte dann nicht so schwer ihn zu loeschen mit Listbox.Items.Remove("Ausgewähte_element") ?? da er auch ein String ist

              Comment


              • #8
                schwer ihn zu loeschen mit Listbox.Items.Remove("Ausgewähte_element") ?? da er auch ein String ist
                Nein. Du hast ja, wenn ich das richtig verstanden habe, einen StringBuilder in Items gepackt. Die Items Liste verwaltet Objekte nicht strings. Ein Objektbuilder mit Inhalt "Ausgewähte_element" ist etwas anderes als ein string mit Inhalt "Ausgewähte_element". Oder technisch ausgedrückt beim Remove wird das zu löschende Element über die Equals Methode des Object in der Items Liste gesucht und ein Vergleich 'StringBuilder.Equals(String)' wird immer false liefern da die Typen ungleich sind. In diesem Fall fällt Equals üblicherweise auf die Standard Equals Implementierung in Object zurück und die vergleicht nicht auf irgendeine Form der Gleichheit sondern auf echte Identität also ob die an der selben Stelle im Speicher stehen.

                Ich habe deine Codeschnipsel nicht ganz verstanden aber vielleicht solltest du einfach mal auf strings umstellen und den Stringbuilder vergessen oder zumindest nur den string aus dem Stringbuilder der Listbox zuweisen.

                Code:
                listBox.Items.Add(stringbuilder.ToString());
                oder tatsächlich einen Stringbuilder Object löschen und keinen string.

                Code:
                StringBuilder stringBuilder = listbox1.SelectdItem as StringBuilder;
                if (stringBuilder != null)
                    listbox1.Items.Remove(stringBuilder);

                Comment


                • #9
                  Hallo Ralf

                  Nochmals Danke es hat funktioniert ....

                  Comment

                  Working...
                  X