LIST T - PERCORRER ITENS

ALEVALE 19/10/2015 11:40:58
#452707
Fala pessoal beleza ?

Seguinte, tenho um List T aonde eu adiciono algumas informações, gostaria de percorrer ele através de um botão tipo para frente e para trás só que não tenho a minima ideia de como fazer, alguém tem alguma luz ?

[ô][ô]CLASSE

Public Class clsComputersImportedActiveDirectory
Public ComputerName As String
Public ComputerModel As String

Public Sub New(ByVal Name As String, ByVal Model As String)
Me.ComputerName = Name
Me.ComputerModel = Model

End Sub

End Class

[ô][ô]ADICIONANDO
Public UserInformarion As New List(Of clsComputersImportedActiveDirectory)()

For i As Integer = 0 To ListBoxComputadoresAuditados.Items.Count - 1
Dim objWMI As New clsWmi(ListBoxComputadoresAuditados.Items(i).ToString())

With objWMI
UserInformarion.Add(New clsComputersImportedActiveDirectory(ListBoxComputadoresAuditados.Items(i).ToString(), .Model))
End With
Next

[ô][ô]PERCORRENDO
Dim sortedByUnit = From p In UserInformarion Order By p.ComputerName Select p

For Each p1 As clsComputersImportedActiveDirectory In sortedByUnit
[ô]fncEnviaEmail(p1.Nome, p1.Usuario, p1.Email, p1.DiasExpirar, p1.DataExpiracao, p1.Unidade)
Next
ACCIOLLY 19/10/2015 14:30:21
#452721
Oi amigo,
se seu list tiver indices basta você recuperar o indice atual, com isso vc pode criar uma função para ir pro próximo índice e outra pra ir pro anterior. Estudei isso em uma matéria de listas e pilhas, mas faz tanto tempo que nem me lembro!
DAMASCENO.CESAR 19/10/2015 16:37:21
#452731
montei esse codigo pra datagridview, dá uma olhada se te ajuda:

Private Sub BtnAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAnterior.Click
If DgvNcrp.Rows.Count <= 0 Then Exit Sub
If nLin >= DgvNcrp.Rows.Count - 1 Then
Exit Sub
Else
If nLin = 0 And DgvNcrp.Rows(nLin).Selected = False Then
DgvNcrp.Rows(nLin).Selected = True
TxtNumero.Text = DgvNcrp.Rows(nLin).Cells(1).Value
MskData.Text = Format(DgvNcrp.Rows(nLin).Cells(3).Value, [Ô]dd/MM/yyyy[Ô])
Else
DgvNcrp.Rows(nLin).Selected = False
DgvNcrp.Rows(nLin + 1).Selected = True
TxtNumero.Text = DgvNcrp.Rows(nLin + 1).Cells(1).Value
MskData.Text = Format(DgvNcrp.Rows(nLin + 1).Cells(3).Value, [Ô]dd/MM/yyyy[Ô])
nLin += 1
End If
End If
End Sub

Private Sub BtnProximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnProximo.Click
If DgvNcrp.Rows.Count <= 0 Then Exit Sub
If nLin < 0 Then
Exit Sub
Else

If nLin = 0 And DgvNcrp.Rows(nLin).Selected = False Then
Exit Sub
DgvNcrp.Rows(nLin).Selected = True
TxtNumero.Text = DgvNcrp.Rows(nLin).Cells(1).Value
MskData.Text = Format(DgvNcrp.Rows(nLin).Cells(3).Value, [Ô]dd/MM/yyyy[Ô])
Else
If nLin = 0 Then
TxtNumero.Text = Contador
MskData.Text = Format(Today, [Ô]dd/MM/yyyy[Ô])
DgvNcrp.ClearSelection()
Exit Sub
End If

DgvNcrp.Rows(nLin).Selected = False
DgvNcrp.Rows(nLin - 1).Selected = True
TxtNumero.Text = DgvNcrp.Rows(nLin - 1).Cells(1).Value
MskData.Text = Format(DgvNcrp.Rows(nLin - 1).Cells(3).Value, [Ô]dd/MM/yyyy[Ô])
nLin -= 1
End If
End If
End Sub
KERPLUNK 19/10/2015 21:11:30
#452744
Já que está usando List<T>, porque não implementar métodos genéricos de MoveNext, MovePrevious? Eu faria eles baseado no método ElementAt(). Aliás, algumas versões de .NET framework(>4.0) já tem isso nativo...
DS2T 20/10/2015 07:49:14
#452753
Concordo com o KerPlunk.

Implementa a interface IList em uma classe e acrescente métodos de navegação entre os itens.

Caso queira fazer tudo na unha: Deixa essa lista aí na seção General, da mesma forma que uma variável para armazenamento de índice. Aí basta você ir acrescentando ou diminuindo dessa variável de index.

Mas claro, isso tudo encapsulado numa classe implementando IList ficaria muito mais formoso.

Abraços!

Tópico encerrado , respostas não são mais permitidas