//PRZYCISKI //przycisk Wyślij private void praca_wyslij_Click(object sender, EventArgs e) { Moje_Arg_Wydarzen Arg_Tabeli = new Moje_Arg_Wydarzen();//tworzymy egzemplarz klasy Moje_Arg_Wydarzen o nazwie Arg_Tabeli (czyli tworzymy argumenty dla wydarzenia) //przypisujemy argumentom wydarzeń wartość string[] rekord = TworzenieRekordu(IleGroupBoxwOknie(ActiveForm)); //dodajemy wiersz do tabeli Arg_Tabeli.wiersz = rekord; string[] etykietki = DodawanieEtykiet(IleGroupBoxwOknie(ActiveForm)); //dodajemy etykiety kolumnom Arg_Tabeli.etykiety = etykietki; WyzwalaczUzupelnianie_obserwacji(Arg_Tabeli); //wywołujemy metodę wyzwalającą wydarzenie (let it happen!) //dodajemy MessageBoxa, by poinformować o wypełnieniu ankiety i możliwości kolejnego jej wypełnienia if (MessageBox.Show("Ankieta: Praca została wypełniona i wysłana do bazy danych. \n Czy chcesz wypełnić ją ponownie?", "Kolejne wypełnienie", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { ActiveForm.Close(); //zamykam obecne okno i otwieram nowe (mniej klikania niż przez menu) Praca praca2 = new Praca(); praca2.Show(); //to samo co w oknie głównym, tylko robione z poziomu wywołania tego okna za pomocą przycisku wyślij praca2.Uzupelnianie_obserwacji += new EventHandler <Moje_Arg_Wydarzen>(praca2_Uzupelnianie_obserwacji); } else { ActiveForm.Close(); //zamykam to okno po prostu } }
//wyzwalacz wydarzenia Uzupelnianie_obserwacji będący metodą (o nazwie WyzwalaczUzupelnianie_obserwacji), której argument to e z klasy Moje_Arg_Wydarzen protected virtual void WyzwalaczUzupelnianie_obserwacji(Moje_Arg_Wydarzen e) { //jeśli wywołamy zdarzenie Uzupelnianie_obserwacji, to będzie ono działać na obiekcie wskazanym przez wskaźnik this (tu: Praca) a jego argumentami (wydarzenia Uzupelnianie_obserwacji) będą e if (Uzupelnianie_obserwacji != null) { Uzupelnianie_obserwacji(this, e); } }
//określamy co ten gostek ma robić, gdy wywoływane jest wydarzenie Uzupełnianie_obserwacji z praca1 private void praca1_Uzupelnianie_obserwacji(object sender, Moje_Arg_Wydarzen e) { //jeśli są jakieś właściwości argumentów to dodajemy wiersz (który niesie wartości z praca1) obiektowi z okna Form1, tj. tabela_glowna if (e != null && e.wiersz != null && e.etykiety != null) { //dodajemy etykiety kolumnom int i = 0; foreach (DataGridViewColumn kol in Program.mainform.tabela_glowna.Columns) { if (kol.Name != "ankieta") { kol.ToolTipText = e.etykiety[i]; i++; } } //dodajemy obserwacje Program.mainform.tabela_glowna.Rows.Add(e.wiersz); } }