私はC#を学び、カスタムPayrollアプリケーションを作成しています。私は、ユーザが一度に1つの給与計算期間を入力/編集または削除することを可能にする雇用者期間用の書式を有している。すなわち、所与の時間にデータベース内に1つのレコードしか存在しない。ComboboxのSelectedIndexChangedメソッドのC#問題
給与計算期間が存在する場合、必要なすべてのフィールドを取得するフォームロードに関するメソッドがあります。
コード:
private void PayrollPeriodForm_Load(object sender, EventArgs e)
{
dateTimePicker2.Value = dateTimePicker2.Value.AddYears(1).AddDays(-1);
// Get service instance
var employerPeriodService = Program.Kernel.Get<IEmployerPeriodService>();
//Query database
var employerPeriods = employerPeriodService.GetAllEmployerPeriods();
if (employerPeriods.Any(x => x != null))
{
var employerPeriod = employerPeriods.First();
txt_tax_year.Text = employerPeriod.U_Tax_year.ToString();
lbl_code.Text = employerPeriod.Code;
cb_number_hours.Text = employerPeriod.U_Day_hrs.ToString();
cb_number_days_week.Text = employerPeriod.U_Week_days.ToString();
cb_number_days_month.Text = employerPeriod.U_Month_days.ToString();
cb_number_days_fortnight.Text = employerPeriod.U_Fortnight_days.ToString();
txt_number_hours_week.Text = employerPeriod.U_Week_hrs.ToString();
txt_number_hours_fortnight.Text = employerPeriod.U_Fortnight_hrs.ToString();
txt_number_hours_month.Text = employerPeriod.U_Month_hrs.ToString();
cb_avg_weeks_month.Text = employerPeriod.U_Weeks_in_month.ToString();
cb_avg_fortnights_month.Text = employerPeriod.U_No_of_Fortnights.ToString();
dateTimePicker1.Text = employerPeriod.U_Starting_period.ToString();
dateTimePicker2.Text = employerPeriod.U_Ending_period.ToString();
txt_tax_year.Enabled = false;
dateTimePicker1.Enabled = false;
dateTimePicker2.Enabled = false;
btn_add.Enabled = false;
btn_update.Enabled = true;
btn_delete.Enabled = true;
btn_update.Visible = true;
btn_delete.Visible = true;
btn_add.Visible = false;
// Store SAP code
SAPCodePeriod = employerPeriod.Code;
}
else
{
//clear textfields after input
cb_number_hours.SelectedIndex = 0;
cb_number_days_week.SelectedIndex = 0;
txt_number_hours_week.Text = "";
cb_number_days_month.SelectedIndex = 0;
txt_number_hours_month.Text = "";
cb_number_days_fortnight.SelectedIndex = 0;
txt_number_hours_fortnight.Text = "";
cb_avg_weeks_month.Text = null;
cb_avg_fortnights_month.Text = null;
lbl_code.Text = "";
txt_tax_year.Enabled = true;
dateTimePicker1.Enabled = true;
dateTimePicker2.Enabled = true;
btn_add.Enabled = true;
btn_update.Enabled = false;
btn_delete.Enabled = false;
btn_add.Visible = true;
btn_update.Visible = false;
btn_delete.Visible = false;
}
}
私は2つのselectdインデックスは、これまでの私のコンボボックスの2のためのイベントを変更しました:
private void cb_number_hours_SelectedIndexChanged(object sender, EventArgs e)
{
// calculate hours/week
var hoursWeek = (int.Parse(cb_number_hours.Text)) * (int.Parse(cb_number_days_week.Text));
txt_number_hours_week.Text = hoursWeek.ToString();
}
private void cb_number_days_week_SelectedIndexChanged(object sender, EventArgs e)
{
// calculate hours/week
var hoursWeek = (int.Parse(cb_number_hours.Text)) * int.Parse(cb_number_days_week.Text);
txt_number_hours_week.Text = hoursWeek.ToString();
}
私の問題: 私はSelectedIndexChanged
のいずれかの方法を持っていた前に、すべてのデータベースの値が適切なテキストボックスとコンボボックスに表示されていました。
ただし、cb_number_hours_SelectedIndexChanged
メソッドを追加した後、以降のDBのテキストボックスとコンボボックスの値はすべて表示されなくなりました。結果として、(int.Parse(cb_number_days_week.Text))
として機能しないメソッドの計算はnullとみなされます。
これを修正するにはどうすればよいですか?あなたのcb_number_hours_SelectedIndexChanged
イベントハンドラで
これは、あなたの質問に答えていませんが、次は無意味です:employerPeriodServiceでEPからのvar employerPeriodsの= .GetAllEmployerPeriods() select ep; var employerPeriods = employerPeriodService.GetAllEmployerPeriods();を書くことができます。代わりに – Dismissile
true;どこから選んでいたのですが、不要なものを取り除くのを忘れた –