wywołanie metody z innej formy

0

Cześć, bawię się trochę w winformsach i mam pewien problem, ale najpierw nakreślę sytuację.
W form1 jest comboBox którego wartościami są nazwy plików z pewnego folderu. W tej samej formie jest button który otwiera nową formę form2.
W form2 jest textBox do którego wpisujemy nazwę oraz button który tworzy plik o danej nazwie. Po udanym stworzeniu pliku form2 się zamyka, ale zanim to się stanie chciałbym wywołać metodę refreshComboBox która jest w form1.
Znalazłem takie rozwiązanie Application.OpenForms.OfType<Form1>().Single().refreshComboBox(); Natomiast nie wiem na ile jest ono poprawne i czy faktycznie powinno się/można tak to robić.
Ktoś może to ocenić oraz podrzucić inne rozwiązanie? :)

1
  1. Łatwe i niezbyt skalujące się: przekazujesz referencję do Form1 w konstruktorze Form2, dzięki czemu dowolna metoda w Form2 może wywoływać publiczne metody Form1.
  2. Trudniejsze, ale bardziej skalujące się i eleganckie, zapewniające separację między widokami, nawigacją i operacjami na danych - implementacja Model View Prezenter albo jakiegoś innego wzorca warstwy prezentacji.
1

Raczej należałoby zrobić przez własny event i event handler, tak jak są zrobione eventy istniejące.

1

jeśli form2 może być otwarta jako modalna to można np. zrobić nazwę pliku publiczną
i w form1:
using (form2 editForm = new form2())
{
if (editForm.ShowDialog() == DialogResult.OK)
{
this.refreshCombo(editForm.nazwaPliku);
}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1