2013-03-01 30 views
0

我有两种方法检查库存和其他方法调用其他方法的系列。如何在特定方法中停止代码

检查库存方法。

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

我想停止执行代码,如果在MessageBox由第一方法显示。

什么是快速修复?

回答

2

切换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; 
} 
2

只要做一个return;的条件,你必须破坏执行,并将退出当前正在运行的方法。或者,如果你想停止两个方法的执行,那么你要么抛出异常(如果是这种情况,并且你想通过异常在你的代码中处理这种情况),或者让方法返回一个布尔值例如,如果一切都很好,则返回true,如果messagebox情况出现,则返回false,然后在main方法中,您知道必须中断。像这样:

if (!checkStock()) { return; } 
0
return; 

将立即停止,并返回不执行你的方法的其余部分。

0

如果您使用的MessageBox.Show的重载函数()?

例如: 公共静态MessageBoxResult展( 串messageBoxText, 串标题, MessageBoxButton按钮 )

所以循环可以检查MessageBoxResult。

+0

这不会帮助,因为Messagebox不包含问题。他想要阻止主函数中的'UpdateStock()',因为我理解他的问题。 – Belial09 2013-03-01 11:48:10

1

最简单,最快捷的方法是从checkStock()方法返回一个布尔值:在SaveAllListItems方法调用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()) 
    return; 

这立即会退出SaveAllListItems方法而不执行任何代码。

进一步建议:checkStock()存取从public更改为protectedprivate - 这是不可能的,你需要从类/表格外访问此。

相关问题