aline234 Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 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. Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Zeig doch mal den Code dazu Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 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] Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Hab das mal mit Visual C# 2010 Express nachgebaut da das klappt bei mir ohne Probleme. Auch über die Tastatur wie dus oben beschrieben hast Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Ich habs gerade mit VB 2010 Express und .NET 4 ausprobiert und da bekomme ich den gleichen Fehler Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Hab das mal mit Visual C# 2010 Express nachgebaut da das klappt bei mir ohne Probleme. Auch über die Tastatur wie dus oben beschrieben hast Stell die Eigenschaft DropDownStyle mal auf DropDownList, dann bekommst du den Fehler auch. Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Na hatte ich schon gemacht aber hat trotzdem funktioniert Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Hm, ich habs auch grade bei mir probiert und ich knall mit dem gleichen Ferhler raus. Poste doch mal bitte deinen Code Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 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] Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Hm, also ich hab von C# echt keine Ahnung und hab deinen Code einfach mal ganz frech kopiert. Jetzt wird die Combobox gar nicht mit Daten befüllt. Helf mir doch mal bitte auf die Sprünge... :floet: Zitieren
a3quit4s Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Das liegt in dem Fall aber nicht an C#... Guybrush handelt es im FormLoad Event ab, du ueberschreibst den OnShow-Event, da musst du schon aufpassen. So wie Guybrush es schreibt, geht es definitiv. Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Im FormLoad klappt es bei mir aber auch nicht. Zum Mäuse melken... Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Hast du denn die Events an das Control angefügt? Also im Designer einmal bei der Form dem Load Event und der ComboBox dem SelectedIndexChanged jeweils die Methoden hinzufügen Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 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: Zitieren
a3quit4s Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Du musst natuerlich dem EventHandler den Event zuweisen, den er abarbeiten soll: Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 In VB ist das auch nicht das Problem gewesen Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Wow, da ist ja VB wesentlich komfortabler Das bezweifle ich Was hast du denn für ein BS? Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Die VB-Variante läuft nicht auf Win7 Pro und XP Pr SP3. Die C#-Variante konnte ich nur auf Win7 Pro testen. Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2011 Geschrieben 23. Dezember 2011 Bei mir wars auch Win 7 Pro 64 Bit. Tjoa keine Ahnung Zitieren
aline234 Geschrieben 23. Dezember 2011 Autor Geschrieben 23. Dezember 2011 Tja, hm, wat nu? :confused: Zitieren
Empfohlene Beiträge
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.