Ir para o conteúdo
User LoL

[Resolvido] remover itens do listbox

Mensagens Recomendadas

User LoL

Tenho um codigo que seleciona todos os itens de um listbox,ai como eu faço pra ele apagar os itens que estiverem vazios,sem texto nenhum?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

Queres mesmo apagar os vazios ? (Qual é a intenção de teres uma linha "vazia" numa listbox?) Ou quiseste dizer que pretendes apagar os selecionados ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
User LoL

Quero apagar os vazios. é que é assim: tenho um textbox e um botao,que adiciona na listbox tudo que eu digito no textbox,e depois apaga o conteudo do textbox,mas acontece que estou adicionando muitas linhas vazias,por engano,e isso esta me atrapalhando

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis
mas acontece que estou adicionando muitas linhas vazias,por engano

Validações...

For i = 0 To ListBox1.SelectedItems.Count - 1
   If ListBox1.Items(i) = "" Then
       ListBox1.Items.Remove(ListBox1.SelectedItems.Item(ListBox1.SelectedItems.Count - 1))
    End If
Next

Obs: Código não testado.


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Essas linhas vazias aparecem porque te enganas e não escreves nada na TextBox antes de ordenares o seu armazenamento na ListBox, ou estes vazios aparecem "do nada"?

Validações...

For i = 0 To ListBox1.SelectedItems.Count - 1
   If ListBox1.Items(i) = "" Then
       ListBox1.Items.Remove(ListBox1.SelectedItems.Item(ListBox1.SelectedItems.Count - 1))
    End If
Next

Obs: Código não testado.

Penso que vá dar erro porque estás a alterar a propriedade Count, do qual o For depende, dentro do próprio For.

EDIT: antes de andar a eliminar espaços vazios, deve-se saber primeiro se estes aparecem por "vontade própria". Se assim for, significa que algo está mal no código que adiciona novos items à ListBox.

EDIT2: claro que pode vir sempre a ser útil, mas se não pretendemos ter espaços vazios na ListBox, o mais confortável e aconselhável é fazer o controlo de input.

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis
Essas linhas vazias aparecem porque te enganas e não escreves nada na TextBox antes de ordenares o seu armazenamento na ListBox, ou estes vazios aparecem "do nada"?

Pelo que me pareceu ele está a fazer testes, e com a rapidez insere muitas vezes valor nulo. Então quis um código para apagar esses valores..

o mais confortável e aconselhável é fazer o controlo de input.

Também me parece


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
User LoL

Estas linhas vazias aparecem por causa que eu clico varias vezes no botao de adicionar o texto,as vezes ele chega adicionar duas linhas vazias,e eu só percebo quando preciso contar quantos itens tem no listbox.

Esse código que foi me passado esta com problemas. Quando todos os itens do listbox estao vazios,ele apaga todos,com sucesso,mas quando ha algum escrito e os outros estao vazios,ele da erro. Obs.no meu caso,tenho um codigo que deixa selecionado todos os itens do listbox ao mesmo tempo,assim achei que ficaria mais facil ele excluir os vazios

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Ahh, espera, então tu queres eliminar todos os items vazios. Apenas os seleccionaste porque pensavas que era mais fácil. Pois informo-te que não é :D

Basta-te isto, sem ter nenhum item seleccionado:

While lb.Items.IndexOf("") <> -1
   lb.Items.Remove("")
End While


Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
User LoL

Só isso? Poxa,valeu mesmo,e eu estava complicando,selecionando todos,depois desmarcando,estava uma confusão.Obrigado a todos pelo apoio, e valeu "thoga31", seu codigo funcionou perfeitamente.Nao usarei o controle do input,porque talvez algum dia eu queira adicionar um item vazio,propositalmente para melhorar a organização dos itens. :thumbsup: valeu

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

De nada. ;)

Por curiosidade, o código que necessitavas para eliminar os items vazios só dentro dos items seleccionados era algo deste género:

'lb = ListBox
Dim itr() As Integer = {}
For i = 0 To lb.Items.Count - 1
   If lb.SelectedIndices.Contains(i) AndAlso lb.Items(i) = "" Then
       ReDim Preserve itr(itr.Length)
       itr(itr.Length - 1) = i
   End If
Next

Dim counter As Integer = 0
For Each ind In itr
   lb.Items.RemoveAt(ind - counter)
   counter += 1
Next

Deverá haver uma melhor forma de o fazer, mas esta foi a primeira que me ocorreu e que funciona.

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
User LoL

é bem isso que eu achei que devia fazer,selecionar todos,depois colocar esse codigo que voce me passou,que apaga os itens vazios dentre os selecionados,mas enfim,foi mais simples que eu imaginava

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.