1

我有两种方法,一种方法检查库存,另一种方法调用一系列其他方法。

检查库存方法。

public void checkStock()
{
    foreach (var listBoxItem in listBox1.Items)
    {
        if (Convert.ToInt32(GetStock(listBoxItem.ToString())) == 0)
        {
            MessageBox.Show(listBoxItem.ToString() + " not in Stock!. Please delete the item before proceeding");

        }
     }
 }

另一种方法是

private void SaveAllListItems()
{

    string listItems = string.Empty;
    foreach (var listBoxItem in listBox1.Items)
    {

            listItems += listBoxItem.ToString();

            if (listBox1.Items.IndexOf(listBoxItem) < listBox1.Items.Count - 1)
            {
                listItems += ", ";
            }
    }

    checkStock();

    UpdateStock();

    InsertUser(maskedTextBox1.Text, comboBox1.Text, maskedTextBox2.Text, maskedTextBox3.Text, maskedTextBox4.Text, maskedTextBox5.Text,
                  maskedTextBox6.Text, maskedTextBox7.Text, maskedTextBox8.Text, maskedTextBox9.Text);

    InsertOrder(Convert.ToInt32(GetID(maskedTextBox1.Text)), orderNumber(), listItems, DateTime.Now, maskedTextBox10.Text, get_next_id());        
}

如果第一种方法显示消息框,我想停止代码执行。

什么是快速修复?

4

5 回答 5

3

切换 checkstock 的退货类型

public bool checkStock()
{
     foreach (var listBoxItem in listBox1.Items)
     {
         if (Convert.ToInt32(GetStock(listBoxItem.ToString())) == 0)
         {
              MessageBox.Show(listBoxItem.ToString() + " not in Stock!. Please delete the item before proceeding");
              return false;
         }
     }
return true;
}

并在您的主代码中执行以下操作:

if (!checkStock())
{
     //EXIT
     return;
}
于 2013-03-01T11:44:13.403 回答
2

只需return;在必须中断执行的情况下执行 a ,这将退出当前正在运行的方法。

或者,如果您想停止这两种方法的执行,那么您要么抛出异常(如果是这种情况,并且您希望通过异常在代码中处理此类情况),或者让该方法返回一个布尔值,例如,如果一切都很好返回 true,如果出现消息框情况返回 false,然后在 main 方法中你知道你必须打破。像这样:

   if (!checkStock()) { return; }
于 2013-03-01T11:41:43.320 回答
1

最简单快捷的方法是从checkStock()方法中返回一个布尔值:

public bool checkStock()
{
    foreach (var listBoxItem in listBox1.Items)
    {
        if (Convert.ToInt32(GetStock(listBoxItem.ToString())) == 0)
        {
            MessageBox.Show(listBoxItem.ToString() + " not in Stock!. Please delete the item before proceeding");
            return false;
        }
     }

    return true;
 }

checkStock()然后在调用该SaveAllListItems方法后对该值进行操作:

if (!checkStock())  
    return;

这将立即退出该SaveAllListItems方法,而不再执行其中的代码。

进一步的建议:将 from 的访问器更改checkStock()publicor protected-private您不太可能需要从类/表单外部访问它。

于 2013-03-01T11:45:58.807 回答
0
return;

将立即停止并返回而不执行其余的方法。

于 2013-03-01T11:42:03.187 回答
0

您是否应该使用 MessageBox.Show() 的重载函数之一?

例如: public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button )

因此循环可能会检查 MessageBoxResult。

于 2013-03-01T11:45:24.640 回答