private void btnEditInvoice_Click(object sender, EventArgs e) { // получение контекста var dbContext = AppVariables.getDbContext(); // поиск сущности по идентификатору var invoice = dbContext.INVOICES.Find(this.CurrentInvoice.Id); if (invoice.PAID == 1) { MessageBox.Show("Change is impossible, invoice paid.", "Error"); return; } using (InvoiceEditorForm editor = new InvoiceEditorForm()) { editor.Text = "Edit invoice"; editor.Invoice = invoice; // Обработчик закрытия формы editor.FormClosing += delegate(object fSender, FormClosingEventArgs fe) { if (editor.DialogResult == DialogResult.OK) { try { // пытаемся сохранить изменения dbContext.SaveChanges(); // перезагружаем проекцию CurrentInvoice.Load(invoice.INVOICE_ID); masterBinding.ResetCurrentItem(); } catch (Exception ex) { // отображаем ошибку MessageBox.Show(ex.Message, "Error"); // не закрываем форму для возможности исправления ошибки fe.Cancel = true; } } }; // показываем модальную форму editor.ShowDialog(this); } }
private void btnAddInvoice_Click(object sender, EventArgs e) { var dbContext = AppVariables.getDbContext(); var invoice = dbContext.INVOICES.Create(); using (InvoiceEditorForm editor = new InvoiceEditorForm()) { editor.Text = "Add invoice"; editor.Invoice = invoice; // Обработчик закрытия формы editor.FormClosing += delegate(object fSender, FormClosingEventArgs fe) { if (editor.DialogResult == DialogResult.OK) { try { // получаем значение генератора invoice.INVOICE_ID = dbContext.NextValueFor("GEN_INVOICE_ID"); // добавляем запись dbContext.INVOICES.Add(invoice); // пытаемся сохранить изменения dbContext.SaveChanges(); // добавляем проекцию в список для грида ((InvoiceView)masterBinding.AddNew()).Load(invoice.INVOICE_ID); } catch (Exception ex) { // отображаем ошибку MessageBox.Show(ex.Message, "Error"); // не закрываем форму для возможности исправления ошибки fe.Cancel = true; } } }; // показываем модальную форму editor.ShowDialog(this); } }