#c# #winforms #combobox
#c# #winforms #поле со списком
Вопрос:
Я пытаюсь проверить, пусто ли поле со списком, используя C # в форме приложения Windows. Ниже приведены два возможных способа:
- если (строка.IsNullOrEmpty(ComboBox1.Text))
- если (ComboBox1.SelectedIndex == -1)
Какой наилучший подход для того, чтобы пользователь ТОЛЬКО выбирал значение из выпадающего списка и НЕ писал свой собственный ответ? Из моего исследования следует, что второй метод (if (ComboBox1.SelectedIndex == -1)) удовлетворит мои потребности. Я прав?
Комментарии:
1.Если выпадающие списки содержат пустую строку в качестве опции, первая возможность неверна (пользователь может намеренно выбрать пустой вариант). В случае 2-го варианта я бы предпочел указать его как
if (comboBox1.SelectedIndex < 0)
, чтобы не использовать магическую константу-1
Ответ №1:
Если вы заботитесь только о том, чтобы пользователи выбирали элемент из доступного списка, просто измените поле со списком DropDownStyle
на DropDownList
или, если вы хотите разрешить им вводить текст, но затем убедиться, что он есть в списке, вы можете сделать что-то вроде этого:
var txt = comboBox1.Text;
if(string.IsNullOrEmpty())
return;
var test = comboBox1.Items?.OfType<string>().ToList().Any(x => x?.Trim() == txt?.Trim());
итак, если тест равен false, это означает, что то, что они выбрали / ввели, не существует в списке доступных элементов
Ответ №2:
для combobox вы можете использовать приведенный ниже код, чтобы проверить, пусто оно или нет
if(comboBox1.Items.Count == 0 )
{
// your code
}
Ответ №3:
Это то, что я пытаюсь, и это работает. Не стесняйтесь комментировать:
if (comboBox1.SelectedIndex > -1 )