如何检查组合框中的项目是否已在列表框中?

时间:2019-05-23 05:57:16

标签: vb.net

我正在处理一个座位预订表格,该表格要求用户输入全名(文本框)和选择的座位(组合框),然后按下按钮以确认预订。如果未输入名称,则会出现一个消息框,要求他们输入名称。如果选择的座位已经在显示到目前为止所有预订的列表框中,则出现一个msgbox来选择另一个座位,因为它已经被预订。组合框中的座位选项名为A1,A2等。

运行代码时,名称检查成功。但是,即使选择的座位已经在列表框中,也不会显示选择另一个座位的提示。我在做什么错了?

昏暗的买家(0)作为一个人

    buyers(0).firstname = firstnamebox.Text
    buyers(0).surname = lastnamebox.Text
    buyers(0).seatchoice = seatlist.SelectedItem


    If firstnamebox.Text.Trim.Length = 0 Then                     
        MsgBox("please include a name")
    ElseIf lastnamebox.Text.Trim.Length = 0 Then
        MsgBox("please include full name")
    ElseIf bookingdetails.Items.Contains(seatlist.SelectedItem) Then
        MsgBox("This seat is already taken please pick another")
    Else
        bookingdetails.Items.Add(buyers(0).getfullname & " , " & buyers(0).seatchoice)

    End If

如果bookingdetails列表框已经包含组合框中的选定项目,则我希望弹出一个msgbox框,提示“此座位已被占用,请再选择一个”。但这似乎只是无视...

1 个答案:

答案 0 :(得分:0)

我怀疑您的程序可能存在一些拼写/大小写问题。 Contains方法区分大小写,并且至少应转换源字符串和目标字符串ToUpper,并可能进行修剪以取得良好效果。不过,最终,我认为您应该给最终用户带来很多荣誉,不要犯错。

这是一个例子

Dim LstBxItms() As String = ListBox1.Items.Cast(Of Object).Select(Function(obj) ListBox1.GetItemText(obj).ToUpper.Trim).ToArray
If LstBxItms.Contains(TextBox1.Text.ToUpper.Trim) Then
    MsgBox("Found match")
End If