2013-03-01 50 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 - 這是不可能的,你需要從類/表格外訪問此。