REMOVER ITEM DA LISTBOX

PEGUDO 03/08/2010 19:21:41
#349327
Galera,
Preciso remover um item da listbox se tal condição for satisfeita.

Preciso remover o nome [Ô]Guilherme[Ô] de dentro dos itens da ListBox. Estou fazendo assim:

[txt-color=#0000f0] For [/txt-color]I = 0 [txt-color=#0000f0]To[/txt-color] ListBox1.Items.Count - 1
[txt-color=#0000f0] If[/txt-color] ListBox1.Items.Item(I) = [txt-color=#e80000][Ô]Guilherme[Ô][/txt-color][txt-color=#0000f0] Then [/txt-color]ListBox1.Items.Remove(ListBox1.Items.Item(I))
[txt-color=#0000f0]Next[/txt-color]

Fui estudando e percebi que meu código dava erro porque não se pode excluir um item enquanto estiver fazendo looping na ListBox.

Será que alguém pode me ajudar, pois com Collection também levei pau.

Obrigado.
JONATHANSTECKER 04/08/2010 08:03:38
#349351
Resposta escolhida
Tava se perdendo no For, pois você retirava um ítem enquanto ele estava executando
Dessa forma funcionou, não sei se tem um método mais prático... Mais funciona...

Dim Index As Integer = -1

For I As Integer = 0 To ListBox1.Items.Count - 1
If Me.ListBox1.Items(I) = [Ô]Guilherme[Ô] Then Index = I
Next
If Index <> -1 Then ListBox1.Items.Remove(ListBox1.Items.Item(Index))

Jonathan Stecker
JONATHANSTECKER 04/08/2010 08:10:52
#349353
Acho que assim fica mais fácil...

For I As Integer = 0 To ListBox1.Items.Count - 1
ListBox1.Items.Remove([Ô]Guilherme[Ô])
Next

Abraços,
Jonathan Stecker
PEGUDO 04/08/2010 08:50:06
#349368
Olá [txt-color=#0000f0]JONATHANSTECKER[/txt-color]

Muito me ajudou o seu código. Mas e se eu quiser retirar outros nomes também da Listbox, sabe como se faz isso usando um Array ou uma Collection?

Lembrando sempre que estes nomes têm que ser retirados via código assim que o Form se abre.
JONATHANSTECKER 04/08/2010 09:11:46
#349377
PEGUDO,

Se é que eu entendi o que você quer... Segue abaixo...

Dim Nome() As String
Dim N As Integer = 0

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AdicionaNome([Ô]Guilherme[Ô])
AdicionaNome([Ô]João[Ô])
AdicionaNome([Ô]Maria[Ô])
End Sub

Sub AdicionaNome(ByVal Nome As String)
ReDim Preserve Nomes(N)
Nomes(N) = Nome
N += 1
End Sub

Sub LimpaLista()
For J As Integer = 0 To N - 1
For I As Integer = 0 To ListBox1.Items.Count - 1
ListBox1.Items.Remove(Nomes(J).ToString)
Next
Next
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
LimpaLista()
End Sub

Jonathan Stecker
PEGUDO 04/08/2010 09:19:35
#349383
Ok. Perfeito.
Tópico encerrado , respostas não são mais permitidas