Usuário com melhor resposta
CheckedListBox: Salvar e Restaurar Itens e Valores.

Pergunta
-
Pessoal, estou começando em C# e estou com uma dúvida com o componente CheckedListBox. Eu carrego uma lista nele onde o usuário poderá selecionar alguns itens. Depois disto, preciso salvar esta lista e o estado dos itens, se estão selecionados ou não no Settings do meu projeto, para quando o Form for aberto novamente, ele carregar esse CheckedListBox como estava antes, ou seja, com todos os itens e seus estados anteriores.
Não sei como fazer isso, se teria como salvar por exemplo numa string "Maça:True; Pera:False; Abacate:True; etc" e depois carregar de novo tudo isso.
A inteligência é inata, mas a sabedoria se aprende.
Respostas
-
Consegui resolver da seguinte forma...
Para salvar os itens checados:
var indicesEnvio = cklist_Envio.CheckedItems.Cast<string>().ToArray(); Properties.Settings.Default["vListaEnvio"] = string.Join(",", indicesEnvio);
Para carregar de volta os itens:
if (!string.IsNullOrEmpty(Properties.Settings.Default.vListaEnvio)) { Properties.Settings.Default.vListaEnvio.Split(',').ToList().ForEach(item => { var index = cklist_Envio.Items.IndexOf(item); cklist_Envio.SetItemChecked(index, true); }); }
A inteligência é inata, mas a sabedoria se aprende.
- Marcado como Resposta Fernando Fonte sexta-feira, 9 de outubro de 2015 13:29
Todas as Respostas
-
Olá Fernando,
Poderia postar o trecho de código com o qual está tendo problemas?
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Consegui resolver da seguinte forma...
Para salvar os itens checados:
var indicesEnvio = cklist_Envio.CheckedItems.Cast<string>().ToArray(); Properties.Settings.Default["vListaEnvio"] = string.Join(",", indicesEnvio);
Para carregar de volta os itens:
if (!string.IsNullOrEmpty(Properties.Settings.Default.vListaEnvio)) { Properties.Settings.Default.vListaEnvio.Split(',').ToList().ForEach(item => { var index = cklist_Envio.Items.IndexOf(item); cklist_Envio.SetItemChecked(index, true); }); }
A inteligência é inata, mas a sabedoria se aprende.
- Marcado como Resposta Fernando Fonte sexta-feira, 9 de outubro de 2015 13:29