Zum Inhalt springen

[VB.NET] Problem mit Item.Remove in ComboBox


aline234

Empfohlene Beiträge

Hallo,

in einer Combobox werden zur Laufzeit drei Items hinzugefügt

- <Keine Auswahl>

- Herr

- Frau

<Keine Auswahl> ist nach dem Laden das SelectedValue. Wählt man in der Combobox Herr oder Frau aus, wird <Keine Auswahl> gelöscht. Das funktioniert wurderbar solange man nur mit der Maus die Combobox bedient. Mit der Tastatursteuerung bekomme ich allerdings Probleme. Nach dem Aufklappen der Combobox navigiere ich mit der Ende-Taste auf den letzten Eintrag (Frau), woraufhin <Keine Auswahl> korrekt entfernt wird. Hier ist allerdings schon auffällig, das die Liste zwar den gelöschten Eintrag nicht mehr anzeigt, sie sich allerdings auch nicht verkleinert. Sprich, die Liste hat immer noch die Größe von drei Items, zeigt aber nur noch zwei an. Verlasse ich jetzt die Combobox z.B. mit ESC oder klicke mit der Maus woanders hin, kriege ich einen Fehler:

System.ArgumentOutOfRangeException: InvalidArgument=Value mit dem Wert 2 ist für index ungültig.

Parametername: index

bei System.Windows.Forms.ComboBox.ObjectCollection.get_Item(Int32 index)

bei System.Windows.Forms.ComboBox.get_SelectedItem()

Zuerst dachte ich, dass es an unserem UserControl der Combobox liegt, aber ich kann dieses Verhalten auch mit der Standard-Combobox nachstellen.

Ich weiß nicht mehr weiter. Wie kriege ich hier eine saubere Tastatursteuerung hin?

Wir benutzen VB.NET 2.0.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier der Code aus meinem Spielprojekt mit der Standard-Combobox:

Public Class Form1
Protected Overrides Sub OnShown(ByVal e As System.EventArgs)
MyBase.OnShown(e)

_formgeladen = False
ComboBox1.Items.Add("Herr")
ComboBox1.Items.Add("Frau")
ComboBox1.Items.Insert(0, "<Keine Auswahl>")
ComboBox1.SelectedItem = "<Keine Auswahl>"

_formgeladen = True
End Sub

Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
If _formgeladen Then
If ComboBox1.SelectedValue <> "<Keine Auswahl>" Then
ComboBox1.Items.Remove("<Keine Auswahl>")
End If
End If
End Sub

Private _formgeladen As Boolean
End Class[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hatte die Solution schon verworfen aber sind ja zum Glück nur ein paar Zeilen ;)


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
comboBox1.Items.Add("Herr");
comboBox1.Items.Add("Frau");
comboBox1.Items.Insert(0, "<Keine Auswahl>");
comboBox1.SelectedItem = "<Keine Auswahl>";

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if ((String)comboBox1.SelectedValue != "<Keine Auswahl>")
comboBox1.Items.Remove("<Keine Auswahl>");
}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wow, da ist ja VB wesentlich komfortabler ;)

Also wie gesagt, ich kenne mich mit C# nicht aus. Der Code läuft jetzt, aber ich bekomme trotzdem den gleichen Fehler, der sich aber anders äußert. Und zwar hält der Debugger in der Klasse Program (Program.cs) an in der Zeile

Application.Run(new Form1());

mit der besagten Fehlermeldung. Danach startet das Programm scheinbar von neuem, da sich wieder die Form mit allen Combobox-Einträgen öffnet. Also auch dem entfernten <Keine Auswahl>.

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...