Siema mam problem ze zdarzeniami i delegatami, chcę zrobić coś takiego, że po jakiejś zmianie w bazie danych(taka imitacja z właściwością) w głównym formularzu(subkrybent) w stopce będzie informacja co ostatnio zrobiono np: "Dodano pracownika" tylko nie wiem jak zasubskrybować
Klasa publikatora
public delegate void DbOperationHandler(string text);
public partial class EmployeesForm : BaseForm
{
public event DbOperationHandler SendInfo;
Pracownicy model = new Pracownicy();
public EmployeesForm()
{
InitializeComponent();
}
private string dboperation = "Nic nie zrobiono";
public string Dboperation
{
get
{
return dboperation;
}
set
{
bool change = dboperation != value;
if (change) SendInfo?.Invoke(value);
}
}
private void EmployeesForm_Load(object sender, EventArgs e)
{
LoadData();
}
private void addEmployeeButton_Click(object sender, EventArgs e)
{
model.Imie = formPrimaryDataEmployee.NameUserControl;
model.Nazwisko = formPrimaryDataEmployee.SurnameUserControl;
model.Pesel = formPrimaryDataEmployee.PeselUserControl;
model.NrTel = formPrimaryDataEmployee.PhoneUserControl;
model.Wyplata = decimal.Parse(paymentEmployeeFormTextBox.Text);
model.Stanowisko = positionEmployeeFormTextBox.Text;
if (ValidateChildren(ValidationConstraints.Enabled))
{
using (SzpitalEntities db = new SzpitalEntities())
{
db.Pracownicies.Add(model);
MessageBox.Show("Dodano do bazy");
dboperation = $"Dodano pracownika: {model.Imie}";
db.SaveChanges();
}
LoadData();
Clear();
}
}
}
Klasa subskrybenta
public partial class MainForm : BaseForm
{
List<Form> openedForm = new List<Form>();
EmployeesForm ef = new EmployeesForm();
public MainForm()
{
InitializeComponent();
}
private void openChildForm(Form form)
{
form.TopLevel = false;
form.Parent = this;
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.BringToFront();
form.Show();
}
private void homeMainMenuButton_Click(object sender, EventArgs e)
{
foreach (Form form in openedForm)
{
form.Dispose();
}
}
private void MainForm_Load(object sender, EventArgs e)
{
ef.SendInfo += DbOperationInfo;
}
private void DbOperationInfo(string text)
{
dbOperationInfoValue.Text = text;
}
}