User LoL Posted December 11, 2012 at 09:23 PM Report Share #486708 Posted December 11, 2012 at 09:23 PM 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? Link to comment Share on other sites More sharing options...
NunoDinis Posted December 11, 2012 at 10:22 PM Report Share #486719 Posted December 11, 2012 at 10:22 PM 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 Link to comment Share on other sites More sharing options...
User LoL Posted December 11, 2012 at 10:28 PM Author Report Share #486721 Posted December 11, 2012 at 10:28 PM 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 Link to comment Share on other sites More sharing options...
NunoDinis Posted December 11, 2012 at 10:38 PM Report Share #486723 Posted December 11, 2012 at 10:38 PM 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 More sharing options...
thoga31 Posted December 11, 2012 at 10:39 PM Report Share #486724 Posted December 11, 2012 at 10:39 PM (edited) 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 December 11, 2012 at 10:41 PM by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
NunoDinis Posted December 11, 2012 at 10:43 PM Report Share #486725 Posted December 11, 2012 at 10:43 PM 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 More sharing options...
User LoL Posted December 11, 2012 at 10:51 PM Author Report Share #486726 Posted December 11, 2012 at 10:51 PM 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 More sharing options...
thoga31 Posted December 11, 2012 at 10:55 PM Report Share #486727 Posted December 11, 2012 at 10:55 PM 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 é 😄 Basta-te isto, sem ter nenhum item seleccionado: While lb.Items.IndexOf("") <> -1 lb.Items.Remove("") End While Knowledge is free! Link to comment Share on other sites More sharing options...
User LoL Posted December 11, 2012 at 11:00 PM Author Report Share #486729 Posted December 11, 2012 at 11:00 PM 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 More sharing options...
thoga31 Posted December 11, 2012 at 11:03 PM Report Share #486730 Posted December 11, 2012 at 11:03 PM (edited) 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 December 11, 2012 at 11:04 PM by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
User LoL Posted December 11, 2012 at 11:16 PM Author Report Share #486733 Posted December 11, 2012 at 11:16 PM é 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 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now