2017-01-07 69 views
0

我有一個wpf應用程序與各種小程序之一,其中計算平行四邊形的面積。我添加了一些錯誤處理,以便如果用戶在高度或寬度框中輸入的值大於double.MaxValue,則會顯示錯誤消息。如何確定哪個文本框輸入觸發了異常,以便我可以將其與錯誤消息一起返回?如果重要的話,高度和寬度框位於用戶控件中。確定拋出異常?

private void AreaOfParallelogramCalcBtn_Click(object sender, RoutedEventArgs e) 
{ 
    if (Convert.ToDouble(AreaOfParallelogramHeightTxtBox.Text) > double.MaxValue == false || (Convert.ToDouble(AreaOfParallelogramWidthTxtBox.Text) > double.MaxValue == false)) 
    { 
     MessageBox.Show("Seriously? That is a pretty big number. Please try again."); 
    } 
    else 
    { 
     AreaOfParallelogramResultTxtBox.Text = 
     CalculateAreaOfParallelogram.Calculate(Convert.ToDouble(AreaOfParallelogramHeightTxtBox.Text), 
     Convert.ToDouble(AreaOfParallelogramWidthTxtBox.Text)).ToString(); 
    } 
} 
+0

什麼是錯的只是檢查並顯示每個文本框分開的消息,而不是或運算兩個檢查? –

+0

@EugenePodskal哇,什麼也不是,我不敢相信我完全忽略了。謝謝。我對這一切都很陌生。 –

+1

注意,但ToDouble(...)> double.MaxValue'永遠不會是'true'。 –

回答

0

所以這可能不是最好的做法,但這是我最終做的,並取得了預期的結果。例外的

private void AreaOfParallelogramCalcBtn_Click(object sender, RoutedEventArgs e) 
    { 
     if (Convert.ToDouble(AreaOfParallelogramHeightTxtBox.Text) > 25000000) 
     { 
      MessageBox.Show($"Height input out of range. Height must be less than 25,000,000\n{Convert.ToDouble(AreaOfParallelogramHeightTxtBox.Text):n0} is a pretty big number. Please try again.", "*WARNING*", MessageBoxButton.OK, MessageBoxImage.Warning); 
     } 
     else if (Convert.ToDouble(AreaOfParallelogramWidthTxtBox.Text) > 25000000) 
     { 
      MessageBox.Show($"Width input out of range. Width must be less than 25,000,000\n{Convert.ToDouble(AreaOfParallelogramWidthTxtBox.Text):n0} is a pretty big number. Please try again.", "*WARNING*", MessageBoxButton.OK, MessageBoxImage.Warning); 
     } 
     else 
     { 
      AreaOfParallelogramResultTxtBox.Text = 
      CalculateAreaOfParallelogram.Calculate(Convert.ToDouble(AreaOfParallelogramHeightTxtBox.Text), 
      Convert.ToDouble(AreaOfParallelogramWidthTxtBox.Text)).ToString(CultureInfo.InvariantCulture); 
     } 
    } 
0

使用源

try 
    { 
    .... 
    } 
    Catch(Exception ex) 
    { 
    MessageBox.Show(ex.Source) 
    }