Dostęp do danych innego Form

0

Jak mieć dostęp w Form1 do danych z Form2? Modifiers dałem na public ale napotykam ciągle na taki błąd:

Form1

Form2 ConnectForm = new Form2();
            string LocalIP = ConnectForm.txtLocalIP.Text;
            string FriendsIP = ConnectForm.txtFriendsIP.Text;
            string LocalPORT = ConnectForm.txtLocalPORT.Text;
            string FriendsPORT = ConnectForm.txtFriendsPORT.Text; 

Wywala mi taki komunikat w Form2.Designer (ConnectForm)

 this.ResumeLayout(false); 

"An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll"

0

A po co chcesz tego użyć? Spróbuj przez konstruktor klasy to zrobić, coś jak public Form1(Form2 form2)...

0

Daj więcej szczegółów - tutaj nic nie widzę.

Przy okazji, dane z innego forma powinieneś odczytywać po jego wyświetleniu, zakładam, że chcesz pobrać to co wprowadził użytkownik, czyli coś takiego:

if(ConnectForm.ShowDialog() == DialogResult.OK)
{
            string LocalIP = ConnectForm.txtLocalIP.Text;
            string FriendsIP = ConnectForm.txtFriendsIP.Text;
            string LocalPORT = ConnectForm.txtLocalPORT.Text;
            string FriendsPORT = ConnectForm.txtFriendsPORT.Text;
}
0

Tu jest ładnie opisane jak to konstruktorem ciachnąć http://forum.pcformat.pl/C-przekazywanie-danych-miedzy-formami-w-2-strony-t

1
  1. Tak samo nie jest dobrym pomysłem przekazywać w konstruktorze cały obiekt Form jak i
  2. Nie jest dobrym upubliczniać kontrolek z innej formatki typu txtName

Pomijając interfejsy i wzorzec np: MVP proponuję używać właściwości z formy typu:

public string Name {get {return txtName.Text; } set { txtName.Text = value; }}

np: if (form2.ShowDialog() == DialogResult.OK) { form1.Example = form2.Name; }

0

Hmn... potrzebuję najpierw w Form2 pobrać dane z Form1, a potem w Form1 pobrać dane z Form2. Jest to takie okienko logowania. Dane które pobieram z Form1 to adres IP. Dane które pobieram z Form2 to adres IP oraz PORT.

0

A może zamiast przekazywania formów między sobą zrobisz jakąś 3 klasę np. LoginData i tam odpowiednie pola, każdy form będzie tam składował swoje dane, oba formy będą zawierać referencję do tego samego LoginData, więc dane będziesz mógł współdzielić.

0

Dokładnie tak jak napisał kolega wyżej albo jeśli IP jest na obydwóch formach upublicznij na drugiej tylko PORT. Chyba, że na 2 formie jest możliwa zmiana tego IP z pierwszej formy.

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