Множественный выбор на WinForms

Как лучше всего реализовать опцию множественного выбора в Windows Forms? Я хочу принудительно применить один выбор из списка, начиная со значения по умолчанию.

Кажется, что ComboBox был бы хорошим выбором, но есть ли способ указать непустое значение по умолчанию?
Я мог бы просто установить это в коде в подходящей точке инициализации, но мне кажется, что я чего-то упускаю.

Ответов (5)

Решение

Если вам нужен только один ответ от группы, то лучше всего подойдет элемент управления RadioButton или вы можете использовать ComboBox, если у вас будет много вариантов. Чтобы установить значение по умолчанию, просто добавьте элемент в коллекцию ComboBox и установите для этого элемента SelectedIndex или SelectedItem.

В зависимости от того, сколько параметров вы просматриваете, вы можете использовать ListBox со свойством SelectionMode, установленным на MultiSimple, если это будет множественный выбор, или вы можете использовать элемент управления CheckBox.

Используйте свойство ComboBox.SelectedItem или SelectedIndex после того, как элементы были вставлены, чтобы выбрать элемент по умолчанию.

Вы также можете рассмотреть возможность использования элемента управления RadioButton для принудительного выбора одного параметра.

Вы должны иметь возможность просто установить для свойства ComboBox.SelectedIndex то, что вы хотите использовать по умолчанию.

http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindex.aspx

Вы можете использовать ComboBox со свойством DropDownStyle, для которого установлено значение DropDownList, а для SelectedIndex - значение 0 (или любой другой элемент по умолчанию). Это приведет к тому, что всегда будет выбран элемент из списка. Если вы забудете это сделать, пользователь может просто ввести что-нибудь еще в поле редактирования - что было бы плохо :)

Если вы даете пользователю небольшой список вариантов, придерживайтесь переключателей. Однако, если вы захотите использовать поле со списком для динамических или длинных списков. Установите стиль DropDownList.

private sub populateList( items as List(of UserChoices))
   dim choices as UserChoices
   dim defaultChoice as UserChoices 

   for each choice in items
      cboList.items.add(choice)
      '-- you could do user specific check or base it on some other 
      '---- setting to find the default choice here
      if choice.state = _user.State or choice.state = _settings.defaultState then 
          defaultChoice = choice
      end if 
   next 
   '-- you chould select the first one
   if cboList.items.count > 0 then
      cboList.SelectedItem = cboList.item(0)
   end if 

   '-- continuation of hte default choice
   cboList.SelectedItem = defaultChoice

end sub