`CalculateButton_Click`方法如何验证和更新`HourlyEmployee`和`CommissionEmployee`属性,并处理输入错误?

问题描述 投票:0回答:1

我需要了解 WPF 应用程序中的CalculateButton_Click 方法如何处理HourlyEmployee 和CommissionEmployee 对象的输入验证和更新。具体来说,它如何检查和管理与工作时间、工资率、总销售额和佣金率相关的用户输入错误?该方法涉及解析用户输入、验证范围以及在输入无效时抛出异常。您能解释一下这个过程是如何在提供的 C# 代码中实现的吗?任何有关如何管理输入错误和使用的验证逻辑的见解都会非常有帮助

c# .net wpf
1个回答
0
投票
    if (EmployeeList.SelectedItem is Employee selectedEmployee)
    {
        if (selectedEmployee is HourlyEmployee hourlyEmployee)
        {
            if (!decimal.TryParse(HoursOrSales.Text, out decimal hoursWorked) || hoursWorked < 0 || hoursWorked > 168)
            {
                throw new ArgumentException("Hours worked must be a positive real number and cannot exceed 168.");
            }
            if (!decimal.TryParse(WageOrCommission.Text, out decimal wageRate) || wageRate < 0)
            {
                throw new ArgumentException("Wage rate must be a positive real number.");
            }
            hourlyEmployee.HoursWorked = (double)hoursWorked;
            hourlyEmployee.WageRate = (double)wageRate;
        }
        else if (selectedEmployee is CommissionEmployee commissionEmployee)
        {
            if (!decimal.TryParse(HoursOrSales.Text, out decimal grossSales) || grossSales < 0)
            {
                throw new ArgumentException("Gross sales must be a positive real number.");
            }
            if (!decimal.TryParse(WageOrCommission.Text, out decimal commissionRate) || commissionRate < 0)
            {
                throw new ArgumentException("Commission rate must be a positive real number.");
            }
            commissionEmployee.GrossSales = grossSales;
            commissionEmployee.CommissionRate = commissionRate;
        }

        selectedEmployee.CalculateEarnings();
        MessageBox.Show($"{selectedEmployee.Name}'s gross earnings: {selectedEmployee.GrossEarnings:C}", "Earnings", MessageBoxButton.OK, MessageBoxImage.Information);
    }
}
catch (ArgumentException ex)
{
    MessageBox.Show(ex.Message, "Input Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
catch (Exception ex)
{
    MessageBox.Show($"An unexpected error occurred: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}

}

© www.soinside.com 2019 - 2024. All rights reserved.