Jump to content
User LoL

[Resolvido] remover itens do listbox

Recommended Posts

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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.