[C#] Przekazywanie Kontrolek z jednego okna do drugiego


([alex]) #1

W pierwszej klasie zrobić publiczną metodę która zmienia pewne właściwości kontrolek.

Z drugiej formatki wywołujesz tą metodę.


(Fiołek) #2

Aleksowi chodziło o takie coś:

class Form1 : Form

{

   //...

   public void Zmień()

   {

      //np.

      this.button1.Text = "abrakadabra!";

   }

}


//Tworzona jest tylko przez Form1 i do metody Show przekazywana jest okno główne które jest właścicielem(czyli Form.Owner).

class Form2 : Form

{

   //...

   private void button1_OnClick(object sender, EventArgs e)

   {

      (this.Owner as Form1).Zmień();

   }

}

Jeśli nic nie pomieszałem to powinno działać.

Prościej, ale gorzej: zrobić te kontrolki jako pola publiczne(co się ma nijak do enkapsulacji i OOP, ale będzie działać i jest prostsze do napisania).


([alex]) #3

Fiolek, masz sumienie? Takich brzydkich rzeczy uczyć młodych! Owszem prostsze ale ...


(Somekindsoftware) #4

Żeby było elegancko, to należałoby użyć co najmniej zdarzeń, a jeszcze lepiej klas pośredniczących lub w ogóle jakiejś sensowniejszej architektury, np. MVP.