vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 279: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: Goofie
 Tipp anzeigenDatum: 22.11.09 21:35

Der Tipp ist Prima, hab ihn auch soweit umgesetzt, aber so ganz stimmt das Ganze noch nich:

    Private Sub Btn_typesearch_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Btn_typesearch.Click
        Dim I As Integer
        Dim U As Integer
        With Lbx_6TypArten
            While I < .Items.Count()
                U = I + 1
                Do Until U > .Items.Count() - 1
                    If .Items(U) = Me.Lbx_6TypArten.Items(I) Then
                        ' doppelten Eintrag gefunden!
                        .Items.Remove(U)
                    Else
                        ' Ist die Liste sortiert, kann an dieser Stelle
                        ' die Schleife verlassen werden, da kein weiterer
                        ' identischer Eintrag mehr vorkommen kann...
                        If .Sorted Then Exit Do
 
                        ' ...ansonsten Zähler um 1 erhöhen
                        'U = U + 1
                    End If
                Loop
                I = I + 1
            End While
        End With
    End Sub
Da stimmt noch irgendas nicht mit dem
Private Sub DeleteDuplicateValues(Liste As Control)
Ich weiß nicht genau, wie ich das umsetzen kann...
Kann mir da bitte jmd. Helfen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: Snof
Datum: 23.11.09 00:51

Hallo

Also der Tipp ist ürsprünglich für VB 5/6 gedacht. Da lief das noch etwas anders mit den Controlls. Um es sauber in .NET zu machen fällt mir momentan keine elegante Lösung ein. Man könnte die Methode überladen, also ein Mal mit DeleteDuplicateValues(Liste As ListBox) und ein Mal mit DeleteDuplicateValues(Liste As ComboBox). Allerding sind dann beide Methoden syntaktisch absolut identisch. Lediglich der Prozedurkopf unterscheidet sich.
Bei einer Methode, also DeleteDuplicateValues(Liste As ListControl), gibt es allerdings ein Problem mit der Item-Eigenschaft. Diese ist zwar bei beiden Steuerelementen praktisch gleich, aber wird in beiden Fallen erst in der entsprechenden Klasse definiert. Es sind also streng genommen zwei verschiedene Eigenschaften.

Persönliche Anmerkung zu dem Tipp:
Steuerelemente sind Objekte, die als graphische Oberfläche gedacht sind. Ihre primäre Aufgabe ist die Ein- und Ausgabe. Sie sollten auch nur dafür genutzt werden. Die Verwaltung von Objekten sollte seperat erfolgen.
Des weiteren ist der Algorithmus nicht gerade gut, was seine Performance angeht. So ist der Aufwand zum Finden von Doppelten O(n^2) und zum Entfernen O(n) (Reflektor 4tw ), somit zusammen O(n^3). Verwaltet man seine Daten eigenständig und füht vor der Suche eine Sortierung durch, lässt sich das Suchen und Entfernen auf O(n * log n) verringern.

Beitrag wurde zuletzt am 23.11.09 um 00:53:33 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: ModeratorDieter (Moderator)
Datum: 23.11.09 06:32

Schau mal hier
Doppelte Einträge aus einer Liste entfernen (.NET)

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: Goofie
Datum: 23.11.09 11:14

Danke für die beiden Antworten, werde mir die mal heute Anend anschauen...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: ModeratorDaveS (Moderator)
Datum: 27.11.09 11:05

Ab VB2008 geht's auch etwas einfacher mit

MyList = MyList.Distinct().ToList()

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Die: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: Goofie
Datum: 02.12.09 01:55

Okay, wie bereits geschrieben, werde ich mich damit die Tage beschäftigen... sollte ich noch fragen haben, melde ich mich bei euch... danke soweit
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel