【问题标题】:Visual Basic - Verifing that an array list contains a valueVisual Basic - 验证数组列表是否包含值
【发布时间】:2014-12-29 02:31:11
【问题描述】:

我在使用 sn-p 代码时遇到了一些问题,我正在尝试将一个项目添加到我成功完成的数据表中,但我注意到如果我尝试添加相同的元素,系统会让我,自然而然地开始创建某种验证,以避免添加具有已经在表中的 ID 的项目。

老实说,我没有看到我的代码有问题,但是我对此还是有点陌生​​。我要做的是一个for循环,它用当前项目的ID填充arrayList,然后检查列表中是否已经存在该ID(从组合框cmbRol获得)以避免重复。

任何见解或提示都会非常有帮助。

这是我的代码。

Private Sub onAsignar(sender As Object, e As EventArgs) Handles btnAsignar.Click

    Dim rol As Integer = cmbRol.SelectedValue
    Dim lstActual As New ArrayList
    Dim rw As Integer

    For Each row As DataGridViewRow In gridListaDatos.Rows

        lstActual.Add(gridListaDatos.Item(0, rw).Value)

    Next

    If (lstActual.Contains(rol)) Then

        MessageBox.Show("This ID already exists in the table", "Asignar Rol", MessageBoxButtons.OK)

    Else

        gestorRol.asignarRolUsuario(rol, idUsuario)
        ActualizarTabla()

    End If

  End Sub

End Class

【问题讨论】:

  • 在添加之前尝试检查元素是否存在。 If(lstActual.Contains(row) Then MessageBox else do the add. 并将 if 语句放在 for 循环中而不是在它之外。我也不会做一个消息框,因为如果列表中有 100 个元素,那可能会很烦人. 您可能希望将重复项记录在一个文件中,以确保所有数据都相同。
  • 当我使用 MsjBox 时,似乎 lsActual 实际上正在存储整数,要么是 selectedValue 有问题,要么我没有将每个元素正确添加到列表中......无论哪种方式不要给我太多见解。
  • MsjBox 显示同一行,例如弹出 3 次(arrayList 中的每个元素一个),但仅显示第一个值,例如:3-3-3
  • 我想我在 for 循环中使用 MessageBox.Show(gridListaDatos.Item(0, rw).Value, "ID", MessageBoxButtons.OK) 找到了问题。该列表将相同的值添加 X 次,每个元素一个。

标签: vb.net visual-studio vba


【解决方案1】:

好的,我解决了这个问题……出于某种原因(可能是迟到了),我认为 rw 变量会自行自动递增,但事实并非如此。

正确的解决方案是:

Private Sub onAsignar(sender As Object, e As EventArgs) 处理 btnAsignar.Click

Dim rol As Integer = cmbRol.SelectedValue
Dim lstActual As New ArrayList
Dim rw As Integer = 0

For Each index As DataGridViewRow In gridListaDatos.Rows

    lstActual.Add(gridListaDatos.Item(0, rw).Value)
    MessageBox.Show(gridListaDatos.Item(0, rw).Value, "ID", MessageBoxButtons.OK)

    rw = rw + 1

Next

If (lstActual.Contains(rol)) Then

    MessageBox.Show("Este rol ya pertenece a este usuario", "Asignar Rol", MessageBoxButtons.OK)

Else

    gestorRol.asignarRolUsuario(rol, idUsuario)
    ActualizarTabla()

    End If

End Sub

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多