VB.Net 05: Event bei Combobox1.items.add

Hallo zusammen

Welches Event wird ausgelöst, wenn ein Eintrag einer Combobox hinzugefügt wird (combobox1.items.add(„asdf“)). Ich möchte dieses Ereignis überschreiben, um doppelte Einträge zu vermeiden.

Ich glaube da wird kein Event ausgelöst. Kannst Du nicht vor dem Add prüfen oder das Element enthalten ist (combobox1.items.FindByValue(„asdf“))?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Eigentlich wollte ich die doppelten Einträge im Objekt selbst abhandeln. Doch scheinbar funktioniert dies nicht…

Eigentlich wollte ich die doppelten Einträge im Objekt selbst
abhandeln. Doch scheinbar funktioniert dies nicht…

Hallo Patrik.

Versuch’s mal indem du die „OnFormat“-Methode deiner Combobox-Klasse überschreibst. Ich hab nicht weiter getestet, wann genau sie auslößt, aber beim Hinzufügen von Items ist dies der Fall (Löschen von Einträgen läßt sie kalt). Das kommt wohl deinem gesuchten Event am nächsten.

Dachte mir das so:

Public Class testCombobox
 Inherits ComboBox

 Protected Overrides Sub OnFormat(ByVal e As System.Windows.Forms.ListControlConvertEventArgs)
 MyBase.OnFormat(e)

 Dim foundCount As Integer = 0


 'Elemente der Combobox durchgehen
 For Each i As Object In Me.Items

 '"Gleiches" Item?
 'Sollen auch andere Datentypen als nur Strings in der Combobox abgelegt werden, muss diese Prüfung evtl. verfeinert werden...
 If i.ToString = e.ListItem.ToString Then
 foundCount += 1
 End If

 'Das Item wurde bereits mindestens 2x gefunden -\> Entfernen und Schleife beenden.
 If foundCount = 2 Then

 Me.Items.Remove(e.ListItem)
 Exit For

 End If

 Next

 End Sub

End Class