Infiniti68
Infiniti68

Reputation: 381

Working with items in a ComboBox and ListBox

I want to move items back and forth between a ComboBox and a ListBox using C# 2010 (form) My code seems to work. However, when I move the items back to the ComboBox (from the ListBox) I have a space in between the items. If anyone has a suggestion on how to remove the space between the items in the ComboBox I would greatly appreciate it.

private void stateslistcomboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    stateslistBox.Items.Add(statescomboBox.SelectedItem);
    statescomboBox.Items.RemoveAt(statescomboBox.SelectedIndex);
}

private void stateslistBox_SelectedIndexChanged(object sender, EventArgs e)
{
    string item = "";
    item = Convert.ToString(stateslistBox.SelectedItem);
    statescomboBox.Items.Add(item);
    stateslistBox.Items.Remove(stateslistBox.SelectedItem);
}

Upvotes: 1

Views: 1898

Answers (1)

Bala R
Bala R

Reputation: 109017

The statescomboBox.Items.Add(item); triggers Another SelectIndexChanged that adds an empty item.

Try

private void stateslistBox_SelectedIndexChanged(object sender, EventArgs e)
{
    string item = "";
    item = Convert.ToString(stateslistBox.SelectedItem);
    statescombobox.SelectIndexChanged -= stateslistBox_SelectedIndexChanged;
    statescomboBox.Items.Add(item);
    statescombobox.SelectIndexChanged += stateslistBox_SelectedIndexChanged;
    stateslistBox.Items.Remove(stateslistBox.SelectedItem);
}

alternatively, you can prevent empty items being added.

private void stateslistBox_SelectedIndexChanged(object sender, EventArgs e)
{
    string item = "";
    item = Convert.ToString(stateslistBox.SelectedItem);
    if (!string.IsNullOrEmpty(item)
    {
        statescomboBox.Items.Add(item);
        stateslistBox.Items.Remove(stateslistBox.SelectedItem);
    }
}

Upvotes: 3

Related Questions