Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

  • Autor

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]

  • Autor
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.

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]

  • Autor

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:

  • Autor

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:

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.