如何确保用户不会未选择任何多项选择输入?
Posted
技术标签:
【中文标题】如何确保用户不会未选择任何多项选择输入?【英文标题】:How can I ensure that a user does not leave any multiple choice inputs unselected? 【发布时间】:2017-06-20 13:53:51 【问题描述】:我正在尝试做一个酒店计费系统,其中用户不能保留未选中的组合框、单选按钮和列表框,我不知道有人可以帮我解决这个问题吗?
-新手
Dim inp As Integer = 0
If RadioButton1.Checked Or RadioButton2.Checked Or RadioButton3.Checked = False Then
inp = 1
End If
If ComboBox1.Text = "" Then
inp = 1
End If
If ListBox1.SelectedIndex() Then
inp = 1
End If
If inp = 1 Then
MessageBox.Show("No selected type of payment" & vbCrLf & "Or" & vbCrLf & "No selected room capacity" & vbCrLf & "Or" & vbCrLf & "No selected room type", "Error")
inp = 0
End If
【问题讨论】:
删除ElseIf
。每个条件都应该在自己的If
中
您有任何错误吗?第 1 行的逻辑对我来说没有任何意义。
顺便说一句,单选按钮通常在设计时设置,以便默认选中其中一个。
【参考方案1】:
您可以在一个 if 语句中完成所有这些操作,您只需检查每个语句的值。
If (RadioButton1.Checked = False AndAlso RadioButton2.Checked = False AndAlso RadioButton3.Checked = False) OrElse Combobox1.SelectedIndex = -1 OrElse ListBox1.SelectedIndex = -1 Then
MessageBox.Show("No selected type of payment" & vbCrLf & "Or" & vbCrLf & "No selected room capacity" & vbCrLf & "Or" & vbCrLf & "No selected room type", "Error")
Exit Sub
End If
一旦发现任何条件为真,就会继续使用 OrElse。如果发生这种情况,我们可以立即进入 If 块并显示消息。在这一点上,继续进行其余的例程没有任何意义,所以我们退出子程序,允许用户修复他们丢失的信息并重试。
话虽如此,您的原始代码中存在多个问题。一个是你的第一行没有做你认为它正在做的事情。 (检查每个条件的值)。另一个是您没有根据任何内容检查列表框的 selectedindex。
查找布尔值,因为您可以使用它而不是 int 来处理您的 inp 标志。
你也有 inp = inp = 1 我认为你想从中减去 1,无论哪种方式,在这种情况下,你可以将它设置回 0(参见我的布尔注释,它会通过允许你来处理这个问题将其设置为真或假)
另外,作为个人提示。如果用户因没有输入预期的所有内容而犯了错误,请不要养成为了解决问题而清除所有工作的习惯。您的代码块告诉用户他们搞砸了,然后您将所有内容设置回空白值。
【讨论】:
大声感谢您的评论,您的代码解决了我的问题。谢谢好先生。 :D【参考方案2】:检查您的代码:
RadioButton2.Checked Or RadioButton2.Checked = False
将始终导致 inp=1
更新
If RadioButton1.Checked = False Or RadioButton2.Checked = False Or RadioButton3.Checked = False Then
inp=1
End If
If ComboBox1.Text = "" Then
inp=1
End If
If ListBox.SelectedItem = -1 Then
inp = 1
End If
If inp = 1 Then
MessageBox.Show("No selected type of payment" & vbCrLf & "Or" & vbCrLf & "No selected room capacity" & vbCrLf & "Or" & vbCrLf & "No selected room type", "Error")
inp = 0
RadioButton1.Checked = False
RadioButton2.Checked = False
RadioButton3.Checked = False
ListBox1.ClearSelected()
ComboBox1.Text = ""
End If
【讨论】:
我改变了它,但它仍然不起作用,即使我检查了一个单选按钮,它仍然显示消息框以上是关于如何确保用户不会未选择任何多项选择输入?的主要内容,如果未能解决你的问题,请参考以下文章