Работа с элементами в выпадающем списке и списке

#c# #winforms

#c# #winforms

Вопрос:

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

 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. Это не практичный дизайн пользовательского интерфейса. Используйте кнопку «Удалить», чтобы удалить выбранный элемент из списка. Также решает проблему преобразования. Проблема с toString(null).

Ответ №1:

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

Комментарии:

1. @Infiniti68 пожалуйста, отметьте это сообщение как свой ответ, нажав на галочку слева от него, если это ваше решение.