如何在特定方法中停止代码

时间:2013-03-01 11:40:09

标签: c# winforms

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

检查库存方法。

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());        
}

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

什么是快速解决方案?

5 个答案:

答案 0 :(得分:2)

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

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

   if (!checkStock()) { return; }

答案 1 :(得分:2)

切换支票的退货类型

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;
}

答案 2 :(得分: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方法,而不再执行其中的代码。

进一步建议:checkStock()的访问者从public更改为protectedprivate - 您不太可能需要访问这来自课堂/表格之外。

答案 3 :(得分:0)

return;

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

答案 4 :(得分:0)

你应该使用MessageBox.Show()的一个重载函数吗?

例如: public static MessageBoxResult Show(       string messageBoxText,       字符串标题,       MessageBoxButton按钮   )

因此循环可以检查MessageBoxResult。