itens incontroláveis no CheckedListBox?
-
03-07-2019 - |
Pergunta
Na estrutura .NET, é possível definir alguns dos itens no CheckedListBox
como "desmarcável"? Não quero permitir que o usuário verifique os mesmos itens novamente e adicione -os a outra lista existente.
Espero estar claro. Desde já, obrigado.
Solução
Eu definiria esses itens como "indeterminados" no código e, em seguida, substituiria a propriedade "NewValue" do evento ItemCheck quando o usuário tenta verificar/desmarcar -os:
public Form1()
{
InitializeComponent();
checkedListBox1.Items.Add("Can't check me", CheckState.Indeterminate);
}
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.CurrentValue == CheckState.Indeterminate)
{
e.NewValue = CheckState.Indeterminate;
}
}
O item "não pode me verificar" no CheckedListBox não pode ser modificado, porque toda vez que o usuário tenta verificar/desmarcar, o manipulador de eventos o altera de volta. Você nem vê a atualização da interface do usuário de acordo.
Outras dicas
O código de Matt é bom.
No entanto, por que ter um item na lista de marcação e não deixar ser selecionado?
Quero dizer, por que ter esse item na lista.