【发布时间】:2021-03-18 11:24:24
【问题描述】:
在我的 C# windows 应用程序中,从网格单元双击我正在填充一个用于保存付款的 Windows 窗体。因此,在付款后,填充的窗体应该将 id 传递给网格并刷新网格中的数据。 简而言之:我需要通过使用委托和事件来实现这一点,因为网格值是从数据库中填充的。每次付款后,网格都需要刷新。即,第二种形式中的按钮应该触发父表单刷新数据网格点击返回值。 Screenshot attached
表格1
private void dgvLoadBalance_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
long cellValue = long.Parse(dgvLoadBalance.Rows[e.RowIndex].Cells[2].Value.ToString());
OPPaymentDatatable= commonDL.GetOpPaymentDetails(opRegId, cellValue);
opDataTable = new DataTable();
opDataTable.Columns.Add("PatientName", typeof(string));
opDataTable.Columns.Add("DoctorName", typeof(string));
opDataTable.Columns.Add("BillTypeName", typeof(string));
opDataTable.Columns.Add("OPId", typeof(string));
opDataTable.Columns.Add("OPNumber", typeof(string));
opDataTable.Rows.Add(uctrlPatientSearch1.PatientName, uctrlPatientSearch1.DoctorName, uctrlPatientSearch1.BillTypeName, uctrlPatientSearch1.OPId,uctrlPatientSearch1.OPNumber);
var settingsdt = commonBL.GetSettings();
if (settingsdt.Rows.Count > 0 && settingsdt != null)
{
Address.Add(settingsdt.Rows[1][2]);
Address.Add(settingsdt.Rows[2][2]);
Address.Add(settingsdt.Rows[3][2]);
Address.Add(settingsdt.Rows[4][2]);
Address.Add(settingsdt.Rows[5][2]);
Address.Add(settingsdt.Rows[6][2]);
Address.Add(settingsdt.Rows[7][2]);
Address.Add(settingsdt.Rows[8][2]);
}
frmPayOPBalance frmbalancepay = new frmPayOPBalance(OPPaymentDatatable, opDataTable, Address);
frmbalancepay.ShowDialog();
}
Form2
private void btnPaynBill_Click(object sender, EventArgs e)
{
if (ValidateForm())
{
BindData();
outVal = commonBL.InsertOpBalanceHistoryPayment(opPaymentModel);
if (outVal > 0)
{
var dt = commonBL.GetOpBalanceBill(opPaymentModel);
if (dt != null && dt.Rows.Count > 0)
opPaymentModel.BillNumber = long.Parse(dt.Rows[0]["BillId"].ToString());
MessageBox.Show("Balance Payment made successfully", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
particularsDt = new DataTable();
particularsDt.Columns.Add("Particulars", typeof(string));
particularsDt.Columns.Add("Rate", typeof(string));
particularsDt.Columns.Add("Amount", typeof(decimal));
particularsDt.Rows.Add("OP Balance Payment for Reciept # " + opPaymentModel.OldBillId, string.Empty, opPaymentModel.BalAmount);
BalancePaymentBillPrint objBalaPayPrint = new BalancePaymentBillPrint(opPaymentModel, Address, particularsDt);
ClearBindings();
this.Hide();
}
else
MessageBox.Show("Error found in bill entry", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
标签: c# winforms events delegates