Работа с элементами в ComboBox и ListBox - PullRequest
1 голос
/ 08 октября 2011

Я хочу перемещать элементы назад и вперед между ComboBox и ListBox, используя C # 2010 (форма) Мой код, кажется, работает.Однако, когда я перемещаю элементы обратно в ComboBox (из ListBox), между ними появляется пробел.Если у кого-нибудь есть предложение, как убрать пробел между элементами в ComboBox, я был бы очень признателен.

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);
}

1 Ответ

3 голосов
/ 08 октября 2011

statescomboBox.Items.Add(item); вызывает еще один SelectIndexChanged, который добавляет пустой элемент.

Попробуйте

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);
}

или вы можете запретить добавление пустых элементов.

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...