Jump to content

[Resolvido] remover itens do listbox


User LoL

Recommended Posts

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

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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. 👍 valeu

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.