#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 пожалуйста, отметьте это сообщение как свой ответ, нажав на галочку слева от него, если это ваше решение.