LIST T - PERCORRER ITENS
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
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
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!
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!
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
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
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...
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!
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