Visual C++, formularze

0

Witam

Od niedawna zacząłem się bawić w Visual C++ 2008 i od dwóch dni borykam się z pewnym problemem. Tworze sobie program, który posiada trzy formularze: Form1, Form2, Form3. Z formularza 1, bez problemu jestem w stanie kontrolować i zmieniać właściwości obiektów należących do dwóch pozostałych formularzy, ale np. jeśli chce z Formularza 2, wykonać jakąś operację, która ma zajść w formularzu 1 to jest problem. Wyskakuje komunikat, że Form1 jest nieznaną nazwą. Wiem, że trochę zawile to tłumaczę, ale myślę, że mnie zrozumiecie. Chodzi mi o to jak z Form2 mogę zrobić coś takiego:

Form1().button3->Text="jakiś tekst"; 

Nie wiem jak inaczej napisać ten kod, żeby było poprawnie. Chodzi o to, żeby z Form2 zmienić właściwość text obiektu button w Form1. :)

Pozdrawiam i dzięki za pomoc

0

na pewno bez nawiasów przy Form1.
poza tym temat był już wałkowany. najprostszym (ale niezbyt zalecanym) sposobem jest przekazanie formy 1 jako parametru w konstruktorze pozostałych form, i przechowywanie go w tych pozostałych formach jako prywatnego pola.
bardziej prawidłowo należałoby w ogóle nie przekazywać formy, tylko zrobić zdarzenie.

0

Nie bardzo rozumiem, jeszcze jestem ciemny w Visualu. Mógłby mnie ktoś bardziej nakierować, bo nie wiem o co chodzi z tymi zdarzeniami.

0

Niestety ale w tych tematach nie ma odpowiedzi na moje pytanie. Zrobiłem coś takiego: w Form2 stworzyłem przestrzeń nazw:

namespace przestrzen
{
        ref class Form1;
};

I teraz z Form2 robiąc coś takiego:

przestrzen::Form1().

Mam dostęp tylko do kilku funkcji formularza pierwszego. Nie mam dostępu do żadnych jego obiektów, co mam jeszcze zrobić?

0

Ale Form1 to klasa nie obiekt, nie możesz mieć do niej dostępu (chyba, że do pól statycznych o ile takowe masz). Z Form1 do Form2 masz dostęp, bo pewnie masz zdefinowane obiekty tych formatek. Takie moje zdanie.

0

w tych tematach jest dokładnie odpowiedź na pytanie.
ale jeszcze raz powtórzę moją odpowiedź:

przekazanie formy 1 jako parametru w konstruktorze pozostałych form, i przechowywanie go w tych pozostałych formach jako prywatnego pola.

teraz powoli: czy wiesz co to konstruktor? co to jest pole? czy odróżniasz typ klasy od obiektu tej klasy? która forma jest u ciebie „formą 1” a które są „pozostałą”?
gdzie wywołujesz konstruktor formy 2? gdzie jest on zdefiniowany? jak do niego dodać parametr? jakiego typu powinien być to parametr?
jak wewnątrz klasy formy 1 nazywa się obiekt tej klasy, skoro nie posiadamy żadnej zmiennej tego typu?

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