我正在尝试建立一个酒店结算系统,其中用户不能离开组合框,单选按钮和未选中的列表框,我想出了什么可以有人帮我这个?
-newbie
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
答案 0 :(得分:3)
你可以在一个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块并显示消息。此时,继续执行其余例程没有任何意义,因此我们退出子,允许用户修复丢失的信息并重试。
话虽如此,您的原始代码中存在多个问题。一个是你的第一行不做你认为它做的事情。 (根据它的价值检查每个条件)。另一个原因是你没有检查列表框中的任何选择索引。
查找布尔值,因为你可以使用它来代替int来处理你的inp标志。
你也有inp = inp = 1,我认为你想要从这两种情况中减去1,在这种情况下,你可以把它设置回0(参见我的布尔注释,它会通过允许你来处理它将其设置为true或false)
另外,作为个人提示。如果用户因未输入所有预期而犯了错误,请不要养成为解决问题而清除所有工作的习惯。您的代码块告诉用户他们搞砸了,然后您将所有内容设置回空白值。
答案 1 :(得分:0)
检查您的代码:
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