Dwa formularze

0

Prosty przykład:

Form 1 zawiera przycisk button1, którego właściwość Text = "test"
Form2 zawiela label1, którego właściwość Text = "a"

Jak zrobić, aby po zdarzzeniu OnClick w button1 otworzyć Form2 i ustawić

Form2.label1.Text = Form2button1.Text

W BCB było to dokładnie tak:
Form2->Label1->Caption = Form1->Button1->Text;

A w C# nie ma dostepu do obiektów Form1 z Form 2 i odwrotnie, o co chodzi?

0

Tworzac nowa forme i pokazujac ja w metodzie Show / ShowDialog, jako parametr podaj referencje na forme rodzica (z reguly this wystarczy). Nastepnie np w zdarzeniu Load mozesz dobrac sie do wszystkich publicznych zmiennych tamtej formy.

np:
string text = ((Form1)this.Owner).label1.Text)

Pamietaj tylko ze this.Owner nie bedzie jeszcze ustawione w konstruktorze, jak i ze kazda kontrolka formy domyslnie ma modyfikator prywatny (trzeba zmienic go na public, jezeli chcemy miec dostep).

Mozesz rowniez przeciazyc konstruktor formy i przy jej tworzeniu przekazac jakiekolwiek parametry Ci sie podobaja :)

0

Dzięki :-)

Działa pięknie, z tym że każdy obiekt musi być publiczny. O to mi chodziło :-)

A czy jest jakiś sposób, aby przekazać wszystkie obiekty bez upubliczniania ich?

0

Owszem ale nie wiem czy to dobry pomysl. Moglbys np stworzyc konstruktor z tablica obiektow, w ktorym bys przekazywal np wszystkie kontrolki z form1.Controls.
Najlepszym rozwiazaniem byloby stworzyc sobie jakas posrednia strukturke, przed otworzeniem kolejenj formy, uzupelnic ja potrzebnymi wartosciami i przekazac jako parametr konstruktora.

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