1

1 つのメソッドが在庫をチェックし、もう 1 つのメソッドが他のメソッドのシリーズを呼び出す 2 つのメソッドがあります。

ストック方法を確認してください。

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

チェックストックのリターンタイプを切り替える

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

実行を中断する必要がある条件でareturn;を実行するだけで、現在実行中のメソッドが終了します。

または、両方のメソッドの実行を停止したい場合は、例外をスローするか (その場合、例外を介してコードでこのようなケースを処理したい場合)、メソッドにブール値を返させます。すべて問題ありません。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これにより、コードを実行せずにメソッドがすぐに終了します。

さらなる提案:checkStock() fromのアクセサをor のpublicいずれかprotectedに変更privateします。クラス/フォームの外部からこれにアクセスする必要はほとんどありません。

于 2013-03-01T11:45:58.807 に答える
0

MessageBox.Show() のオーバーロード関数の 1 つを使用する必要がありますか?

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

したがって、ループは MessageBoxResult を調べることができます。

于 2013-03-01T11:45:24.640 に答える
0
return;

すぐに停止し、残りのメソッドを実行せずに戻ります。

于 2013-03-01T11:42:03.187 に答える