Múltipla escolha no WinForms
Pergunta
Qual é a melhor maneira de implementar uma opção de múltipla escolha no Windows Forms?Quero impor uma única seleção de uma lista, começando com um valor padrão.
Parece que um ComboBox seria uma boa escolha, mas existe uma maneira de especificar um valor padrão que não esteja em branco?
Eu poderia simplesmente configurá-lo no código em algum ponto de inicialização apropriado, mas sinto que está faltando alguma coisa.
Solução
Se você quiser apenas uma resposta do grupo, um controle RadioButton seria a melhor opção ou você poderia usar o ComboBox se tiver muitas opções.Para definir um valor padrão, basta adicionar o item à coleção do ComboBox e definir SelectedIndex ou SelectedItem para esse item.
Dependendo de quantas opções você está olhando, você pode usar um ListBox com a propriedade SelectionMode definida como MultiSimple, se for de múltipla escolha ou você pode usar o controle CheckBox.
Outras dicas
Você deve ser capaz de definir apenas a propriedade ComboBox.SelectedIndex com o que deseja que seja o valor padrão.
http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindex.aspx
Use o ComboBox.SelectedItem ou Índice selecionado propriedade após os itens terem sido inseridos para selecionar o item padrão.
Você também pode considerar usar Botao de radio controle para impor a seleção de uma única opção.
Você pode usar um ComboBox com o Estilo suspenso propriedade definida como DropDownList e SelectedIndex como 0 (ou qualquer que seja o item padrão).Isso forçará sempre a ter um item da lista selecionado.Se você esquecer de fazer isso, o usuário poderá simplesmente digitar outra coisa na parte da caixa de edição - o que seria ruim :)
Se você estiver fornecendo ao usuário uma pequena lista de opções, use os botões de opção.No entanto, se você quiser usar a caixa de combinação para listas dinâmicas ou longas.Defina o estilo como 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