2013-03-01 3 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());   
} 

입니다.

빠른 수정이란 무엇입니까?

답변

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

및 기본 코드에서 checkstock

의 반환 형식을 전환 :

if (!checkStock()) 
{ 
    //EXIT 
    return; 
} 
2

실행을 중단해야하는 조건에서 return;을 실행하면 현재 실행중인 방법이 종료됩니다.

두 가지 메서드를 모두 실행하지 않으려면 예외를 throw하거나 예외를 통해 예외를 throw하거나 예외를 통해 코드에서이 경우를 처리하려는 경우 부울 값을 반환하도록합니다. 예를 들어 모든 것이 정상이면 true를 반환하고, messagebox 상황이 false로 표시되면 main 메소드에서 중단해야 함을 알 수 있습니다. 그래서 같이 :

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

즉시 중지하고 돌아없이 방법의 나머지 부분을 실행합니다.

0

당신이 MessageBox.Show의 과부하 기능 중 하나를()를 사용해야 하는가? 예를 들어

: 공공 정적 MessageBoxResult 쇼 ( 문자열 messageBoxText, 문자열 캡션, MessageBoxButton 버튼 )

그래서 루프는 MessageBoxResult을 검사 할 수 있습니다. 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; 
} 

그런 다음 그 값에 따라 행동 :

+0

Messagebox에 질문이 없으므로 도움이되지 않습니다.그리고 그는 그의 질문을 이해함에 따라'UpdateStock()'을 주 함수에서 막고 싶습니다. – Belial09

1

간단하고 빠른 방법은 checkStock() 방법에서 부울 값을 반환하는 것입니다

if (!checkStock()) 
    return; 

이 바로 것 더 이상 코드를 실행하지 않고 SaveAllListItems 메소드를 종료하십시오.

또한 제안 : protected 또는 private 하나에 public에서 checkStock()의 접근을 변경 - 당신이 클래스/양식을 외부에서이 액세스해야하는 것 같지는 않다.

관련 문제