2014-01-24 20 views
0

我的代码是一个简单的订单,需要一定的信息。当用户没有输入一条信息时,程序显示一个对话框,然后在用户点击Okay之后,它仍然计算信息。我是新来的所以这里VB是代码片段:如何在出现对话框后阻止我的程序执行

If (CheckBox3.Checked = False And blueBlackQuantityTextBox.Text <> "" And blueBlackQuantityTextBox.Text > 0) Then 
     MessageBox.Show("Please check item you wish to purchase", "No Item Selected", 
     MessageBoxButtons.OK, MessageBoxIcon.Error) 
     Stop 
    End If 

    Const whiteBlackDicePrice = 6.25 
    Const redBlackDicePrice = 5.0 
    Const blueBlackDicePrice = 7.5 
    Const tax = 0.05 

    Dim whiteBlackSubTotal As Double = whiteBlackQuantityTextBox.Text *  whiteBlackDicePrice 
    Dim redBlackSubTotal As Double = redBlackQuantityTextBox.Text * redBlackDicePrice 
    Dim blueBlackSubtotal As Double = blueBlackQuantityTextBox.Text * blueBlackDicePrice 
    'newBalanceResultLabel.Text = String.Format("{0:C2}", newBalance) 

    Dim subtotal As Double = whiteBlackSubTotal + redBlackSubTotal + blueBlackSubtotal 

    whiteBlackTotalsLabel.Text = String.Format("{0:C2}", whiteBlackSubTotal) 
    redBlackTotalsLabel.Text = String.Format("{0:C2}", redBlackSubTotal) 
    blueBlackTotalsLabel.Text = String.Format("{0:C2}", blueBlackSubtotal) 

    subtotalResultLabel.Text = String.Format("{0:C2}", subtotal) 

制止每个IF语句后,导致程序崩溃了,我只能对话框说:好吧。

请帮忙!

+0

我有一个临时解决方案。 dim计数为整数= 0,并且在每个IF语句之后将count加1.如果count为= 0,则继续执行程序。 任何人都可以提供更好的解决方案吗? – Kato

+0

您只能显示一条IF语句 – Plutonix

回答

2

在这里,你应该怎么写程序

Private sub MySub() 

    If not ConditionsValidated() Then 

     MessageBox.Show("Please check item you wish to purchase") ' MsgBox with a single button always returns Ok. Here you don't even need to tell to show Ok - this is default. 
     Return 
    End If 

    ' your code is running here 

end sub 

private function ConditionsValidated() as Boolean 

    ' Validate your controls here 

end sub 

我也不会显示“错误”的提示框,如果有人没有选择的东西。错误意味着您的应用程序遇到严重错误。这就是为什么有验证工具可以在无效控件旁边显示一个小红点,或者使控件的颜色变为红色等。

0
If (CheckBox3.Checked = False And blueBlackQuantityTextBox.Text <> "" 
     And blueBlackQuantityTextBox.Text > 0) Then 

    If MessageBox.Show("Please check item you wish to purchase", 
      "No Item Selected", 
      MessageBoxButtons.OK, MessageBoxIcon.Error) = DialogResult.OK Then 
      Stop 
    End If 
End if 

msgbox消息和动作似乎不匹配。它不清楚“没有项目”会结束程序(或打破设计师调试)。也许你的意思是Exit Sub?此外,由于他们有一个选择,所以它总是会结束程序

无论如何,MessageBox是一个函数,返回您可以评估的DialogResult。你没有你的配置这样

+0

抱歉这是什么情况:1.运行程序。 2.用户发生错误。 3.对话框显示“请检查...购买”4.信息仍然计算(代码检查后的代码) 我想在错误信息显示后,用户可以更改信息,无需计算代码后。 – Kato

+0

最初的问题是让程序在MsgBox之后停止,上面解释说 - 你没有检查结果。现在听起来像是你想要的东西就像TS答案 - 检查数据并与计算用户SEPERATE做对话。或者,而不是STOP,请执行EXIT SUB或将IF结构更改为使用ELSE – Plutonix

相关问题