Adicionando Items do ListBox para um CheckBoxList
Autor: Cátia | Publicado: 2011-05-25T08:08:00-03:00

Pessoal, postei uma dúvida no Fórum do Dev Brasil e recebi uma excelente resposta do colega  Ramon Wolff Zaccaron.
Pergunta: gostaria de saber como adicionar os items de um listbox para um  checkboxlist, só tem um pequeno detalhe: se no listbox tiver algum item  repetido ou vazio, ele não deve adicionar no checkboxlist.
Resposta: Antes de lhe ajudar na sua dúvida, quero lhe informar que existe mais de uma maneira de resolver este problema.
Abaixo segue o código que acredito suprir sua necessidade:

&nbsp;&nbsp;&nbsp; protected void btnAdd_Click(object sender, EventArgs e)
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IList&lt;ListItem&gt; chklList = new List&lt;ListItem&gt;();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (ListItem item in this.lstSource.Items)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Caso a variável item necessite de algum tratamento
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //realizar neste ponto.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((!string.IsNullOrEmpty(item.Text)) &amp;&amp; !chklList.Contains(item))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chklList.Add(item);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (chklList.Count &gt; 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (ListItem item in chklList)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chklTarget.Items.Add(item);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //this.chklTarget.Items.Add(item.Text);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }

...onde:

lstSource - Control ListBox;
chklTarget - Controle CheckBoxList;
btnAdd - Controle Button que utilizei para adicionar os itens.

Primeiramente eu declaro um objeto do tipo IList&lt;ListItem&gt;, não  sei qual sua necessidade mas eu fiz com uma lista deste tipo pois cada  item de um ListBox&nbsp;ou CheckBoxList é deste tipo compondo um  ListItemCollection. Pode alterar para outro tipo (primitivo ou não).  Este objeto irá receber a lista filtrada do ListBox.

Com um&nbsp;"foreach" eu percorro os itens do ListBox. Note o meu  comentário onde o tratamento dos valores do ListBox deve ocorrer, caso  precise.&nbsp;Trabalhar com a variável pode ser necessário (LTrim, RTrim,  Replace, etc.) se você estiver utilizando um IList do tipo&nbsp;string por  exemplo.

A seguir, a verificação que você especificou&nbsp;é realizada, onde&nbsp;neste  exemplo a&nbsp;propriedade Text é verificada, você pode também verificar a  propriedade Value se for o caso.

Caso&nbsp;não&nbsp;haja irregularidades com a variável, a mesma é adicionada em  nossa lista. A verificação será realizada com cada item do&nbsp;ListBox.

Por fim, uma validação é feita na lista verificando se esta possui items. Caso sim, adiciona no controle CheckBoxList (chklTarget).  Note que o método Add possui duas sobrecargas, a primeira irá adicionar  o item igual como está no ListBox e suas propriedades (Text, Value...).  A segunda sobrecarga irá adicionar o texto dos itens do ListBox, ou  seja as propriedades Value e Text será a mesma, o que funcionará normal,  porém, caso valores e textos são diferentes no ListBox, neste  controle&nbsp;será igual.

Cátia, um refactor será bem vindo neste código, validações podem ser  necessárias, caso você não saiba quais dados podem estar listados no  ListBox, se forem valores estáticos fica mais fácil. Caso tenha alguma  dúvida pode perguntar ou caso não funcione informe que a gente discute o  assunto.

Quem quiser ver na íntegra: http://devbrasil.net/group/cdesenvolvendores/forum/topics/adicionando-items-do-listbox?commentId=2307362%3AComment%3A95735&amp;xg_source=msg_com_gr_forum