Проверьте, пусто ли поле со списком C#

#c# #winforms #combobox

#c# #winforms #поле со списком

Вопрос:

Я пытаюсь проверить, пусто ли поле со списком, используя C # в форме приложения Windows. Ниже приведены два возможных способа:

  1. если (строка.IsNullOrEmpty(ComboBox1.Text))
  2. если (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 )