Witam was.
Na projekt na uczelnię piszę pewien programik, i nie jestem pewien poprawności wyboru ścieżki rozwiązania problemu, jaki obrałem.
Potrzebuję w jednym oknie operować danymi, które będą wczytane w drugim oknie, gdy wciśnie się na nim guzik. Rozwiązałem to tak, że przesyłam w konstruktorze funkcję formy głównej, która operuje danymi do formy drugiej, i w chwili kliknięcia przycisku wywołuje się funkcja formy głównej.
W skrócie wygląda to tak:
public partial class FormaDruga: Window
{
Delegate funkcja;
public FormaDruga(Delegate fun)
{
InitializeComponent();
funkcja = fun;
private void buttonReady_Click(object sender, RoutedEventArgs e)
{
WczytajDane();
}
private void WczytajDane()
{
//wczytanie danych
funkcja.DynamicInvoke(dane);
this.Close();
}
}
public partial class FormaGlowna: Window
{
private delegate void funkcja(Dane dane);
private void OperacjeNaDanych(Dane dane)
{
// cos tam sie dzieje
}
private void button_Click(object sender, RoutedEventArgs e)
{
funkcja wywolywana = OperacjeNaDanych;
FormaDruga = new FormaDruga(wywolywana);
hdw.Show();
}
}
Wszystko działa, ale na mój gust, to strasznie nieprofesjonalne. Jest na to jakiś lepszy sposób?
edit. Pisane w WPF, ale to chyba różnicy nie robi w tej sprawie.