2014-11-17 7 views
0

여기 내 TextChanged 이벤트입니다.내`TextChangedEvent`가`FormLoad` 이벤트에서 발생하고 오류가 발생합니다. 올바른 형식이 아닌 입력 문자열

private void Price_Discount_MarginBox_TextChanged(object sender, EventArgs e) 
{ 
    if (Convert.ToDecimal(profit_MarginTextBox.Text) > 0) 
    { 
     Company_List_PriceTextBox.Text = ((Convert.ToDecimal(list_PriceTextBox.Text) - (Convert.ToDecimal(list_PriceTextBox.Text) * (Convert.ToDecimal(discountTextBox.Text)/100)))/Convert.ToDecimal(profit_MarginTextBox.Text)).ToString(); 
    } 
    else 
     Company_List_PriceTextBox.Text = list_PriceTextBox.Text; 
} 

다양한 텍스트 상자는 바인딩 Data Table의 데이터로 채워하지 않는 한 0.00의 문자열 값으로 설정됩니다. textChanged 이벤트는 세 가지 textbox에 있습니다.

+1

를 시도 요청에서이

decimal demo; if(decimal.TryParse(profit_MarginTextBox.Text,out demo)){ if (Convert.ToDecimal(profit_MarginTextBox.Text) > 0) { Company_List_PriceTextBox.Text = ((Convert.ToDecimal(list_PriceTextBox.Text) - (Convert.ToDecimal(list_PriceTextBox.Text) * (Convert.ToDecimal(discountTextBox.Text)/100)))/Convert.ToDecimal(profit_MarginTextBox.Text)).ToString(); } else Company_List_PriceTextBox.Text = list_PriceTextBox.Text; } 

을보십시오. "문자열이 올바른 형식이 아닙니다."오류 (실제로 FormatException이 발생 함)는 Convert.ToDecimal 호출 중 하나가 원인입니다. 디버거를 사용하십시오. 해당 줄에 중단 점을 설정하고 변환하려는 값을보십시오. –

+0

'error'와'error type' 사이의 설명에 감사드립니다. –

답변

3

당신이해야 할 일은 데이터가 유효한 문자열인지 확인하는 것입니다. 텍스트가 null의 경우는 null = 0은 고려하지 않는다

Would you be able to tell me how to put Line 5 on multiple lines for easier reading? 

당신은이 너무 복잡하고 있습니다이

decimal margin = Convert.ToDecimal(profit_MarginTextBox.Text); 
decimal price = Convert.ToDecimal(list_PriceTextBox.Text); 
decimal discount = Convert.ToDecimal(discountTextBox.Text); 
decimal total = 0; 
if (margin > 0) 
    total = (price - (price*(discount/100)))/margin; 
else 
    total = price; 
Company_List_PriceTextBox.Text = total.ToString(); 
+0

TryParse가 문제를 해결했습니다. 감사. 더 쉽게 읽을 수 있도록'Line 5 '를 여러 줄에 쓰는 방법을 알려주시겠습니까? –

+0

네, 그랬습니다. 방금 SQL 문에서'@'을 사용할 때와 비슷한 방법이있을 것이라고 생각했습니다. –

+0

당신은 친구입니다. :) –