VB.NET LISTBOX[输入和输出]



我实际上在使用考勤系统,使用列表框来监控"员工"是否超时。txtImpNum.text作为我的文本框,rdTin作为我的收音机按钮,rdTout作为我超时的单选按钮,lblName、lblDept、lblinout只是标签。我希望,如果一个用户已经在他/她的名字计时不会出现在我的列表框上,而不是弹出消息框。但在这个代码上,尽管弹出了消息框,但员工的名字仍然出现在我的列表框上。

If txtEmpNum.Text = 8888 Then
        If rdTin.Checked = True Then
            For i As Integer = 0 To listEmp.Items.Count - 1
                If (listEmp.Items(i).ToString.Contains("Bane Lim")) Then
                    MsgBox("String found at " & (i + 1).ToString)
                    Exit For
                End If
            Next
            lblName.Text = "Bane"
            lblDept.Text = "Admin"
            lblinout.Text = "In"
            listEmp.Items.Add("Bane Lim")
            txtEmpNum.Clear()
        ElseIf rdTout.Checked = True Then
            lblName.Text = "Bane"
            lblDept.Text = "Admin"
            lblinout.Text = "Out"
            listEmp.Items.Remove("Bane Lim")
            txtEmpNum.Clear()
        End If

这个名称是第二次出现的问题吗?您将希望退出Sub或退出Function,而不是退出For。Exit For将其从循环中踢出,但继续使用剩余的代码(再次添加)。

否则在那里添加一个标志,如:

    If txtEmpNum.Text = 8888 Then
        If rdTin.Checked = True Then
            Dim bolFound As Boolean = False
            For i As Integer = 0 To listEmp.Items.Count - 1
                If (listEmp.Items(i).ToString.Contains("Bane Lim")) Then
                    MsgBox("String found at " & (i + 1).ToString)
                    bolFound = True
                    Exit For
                End If
            Next
            If Not bolFound Then
                lblName.Text = "Bane"
                lblDept.Text = "Admin"
                lblinout.Text = "In"
                listEmp.Items.Add("Bane Lim")
                txtEmpNum.Clear()
            End If

        ElseIf rdTout.Checked = True Then
            lblName.Text = "Bane"
            lblDept.Text = "Admin"
            lblinout.Text = "Out"
            listEmp.Items.Remove("Bane Lim")
            txtEmpNum.Clear()
        End If

最新更新