如何确保用户不会未选择任何多项选择输入?

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

【讨论】:

我改变了它,但它仍然不起作用,即使我检查了一个单选按钮,它仍然显示消息框

以上是关于如何确保用户不会未选择任何多项选择输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中同步表格视图和搜索栏选择?

HTML如何显示多项选择的输出?

多项选择题组件--react

Select2 多个 - 如何设置空白默认值

如何从联系人列表中启用多项选择

如何使用 Siri 语音命令验证用户在多项选择题中的回答