如何在特定方法中停止代码
本文关键字:代码 方法 | 更新日期: 2023-09-27 18:01:47
我有两个方法,其中一个方法检查库存,另一个方法调用一系列其他方法。
检查库存方法
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());
}
如果消息框是通过第一个方法显示的,我想停止代码执行。
快速解决方案是什么?
切换检查库存的返回类型
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;
}
只需在必须中断执行的条件下执行return;
,即可退出当前正在运行的方法。
或者,如果你想停止这两个方法的执行,那么你要么抛出一个异常(如果是这样的话,你想通过异常在代码中处理这样的情况(,要么让方法返回一个布尔值,例如,如果一切都好,则返回true,如果消息框的情况出现,则返回false,然后在主方法中你知道你必须中断。像这样:
if (!checkStock()) { return; }
最简单、最快捷的方法是从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;
}
然后在调用SaveAllListItems
方法中的checkStock()
后对该值进行操作:
if (!checkStock())
return;
这将立即退出SaveAllListItems
方法,而不执行其中的任何代码
进一步建议:将checkStock()
的访问器从public
更改为protected
或private
-您不太可能需要从类/窗体外部访问它。
return;
将立即停止并返回,而不执行方法的其余部分。
是否应该使用MessageBox.Show((的重载函数之一?
例如:公共静态MessageBoxResult显示(字符串messageBoxText,字符串标题,MessageBoxButton按钮)
因此,循环可以检查MessageBoxResult。