Dostęp do pól obiektu z innego obiektu

0

Witam, jak zrobić następującą rzecz mam jedno okienko główne które będzie cały czas otwarte. Teraz chciałbym klikając w jakiś przycisk otworzyć nowe okno ale tak aby w oknie2 był dostęp do pewnego obiektu utworzonego w oknie1. Jak to zrobić ?

0

Najprościej: przekaż go konstruktorem. Klasa jest typem referencyjnym więc będziesz operować na oryginalnym obiekcie.

Wedle prostego przykładu:

    class C1
    {
        public string Name { get; set; } = "C1";
    }

    class C2
    {
        public C2(C1 c1)
        {
            c1.Name = "Changed";
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var c1 = new C1();
            var c2 = new C2(c1);
            Console.WriteLine(c1.Name);
        }
    }
0

ok, obawiam się że tych okien będzie więcej, gdzieś wyczytałem że można by zastosować singleton. Okna będą się otwierały jedno z drugiego i trzeba by było non stop przekazywać to w konstruktorze.

0

Bardzo źle kombinujesz. Okno to tylko narzędzie prezentacji. Jeśli z jakiegoś pwoodu okno B ma mieć dostęp do okna A to zakładam że ma się za tym kryć jakaś logika.
Pomyśl o tym bardziej w ten sposób:
Okno A <-------------------> (Logika i Dane) <------------------> Okno B
Zakładam żę konieczność zmiany czegoś w oknie A przez okno B wynika ze zmiany jakiejś wartości, zatem:

  1. Logika i/lub dane dane to osobna klasa utworzona poza oknem. Tak jak napisałeś wcześniej może być singletonem.
  2. Okna to osobne klasy okien
  3. Okno A i okno B pobiera dane z klasy Logiki i potrafi reagować na zmiany w tej klasie. Tak samo zmiany w oknie A i B powinny odzwierciedlać się w klasie logiki

Mała uwaga: Pisząc o konieczności zmainy czegoś w klasie mam na myśli zmianę czegos w obiekcie klasy (tak dla formalności, nie chce mi się poprawia skrótu myślowego :-) )

0

ok, to brzmi sensownie, spróbuję tak zrobić.

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