C# Wykonywanie zadań z Form2 do Form1

0

Witam, mam problem z wykonywaniem zadań z Form2 do Form1. Otwieranie Form2 z otwarciem strony działa

            Form2 form2 = new Form2();
            form2.WebBrowser1.Navigate("www.google.pl");
            form2.Show();
            

ale jak zrobić żeby bez otwieranie nowego okna Form1 wykonać polecenie. To podane niżej jest źle..

            Form1 form1 = new Form1();
            form1.WebBrowser1.Navigate("www.google.pl");
            form1.Show();
0

Nie do końca rozumiem, masz na myśli dostęp do kontrolki w formie z innej formy?
Sprecyzuj

Aby z Form2 uzyskać dostęp do WebBrowser należy

form1.WebBrowser1.Navigate("www.google.com");

Aby z Form1 uzyskać dostęp do WebBrowser należy

form2.WebBrowser1.Navigate("www.google.com");

Pamiętaj tylko że instancja "form1" i "form2" musi być dostępna
Pamiętaj też żeby zmienić poziom ochrony WebBrowser (wszystkich) na publiczny (domyślnie prywatny) inaczej nie będziesz miał dostępu

0

To WebBrowser znajduje się na Form1 czy Form2? Jeżeli na Form2 to dlaczego próbujesz się odwołać na Form1?

0

webbrowser znajduje się w Form1 i Form2. są ustawione na Public. Chodzi o to, że wykonując kod poniżej Form2 otwiera mi nowe okno Form1. a czy da się zrobić żeby używał już otwartego okna Form1?

            Form1 form1 = new Form1();
            form1.WebBrowser1.Navigate("www.google.pl");
            form1.Show();
0
Sarrus napisał(a):

To WebBrowser znajduje się na Form1 czy Form2? Jeżeli na Form2 to dlaczego próbujesz się odwołać na Form1?

Form2 ma otworzyć stronę internetową na Form1.

0

Chce żeby okna mogły wysyłać sobie polecenia w obie strony form1 do form2 i na odwrót bez otwierania nowych okien.

0

Więc tak Form1 tworzy Form2 i zachowuje obiekt jako pole prywatne. Form2 nie powinien mieć natomiast referencji do Form1 bo to generuje zależność cykliczną. Lepiej gdyby Form2 generowało zdarzenia a Form1 te zdarzenia odbierał. Jeżeli jednak bardzo chcesz to możesz przekazać do Form2 referencję obiektu Form1 (używając this) i tam używając tej referencji wywołać odpowiednią metodę. Czyli tak w Form1:

this.form2 = new Form2(this);
form2.Show();

Konstruktor klasy Form2:

public Form2(Form1 form1)
{
   this.form1 = form1;
}

Napiszę jeszcze raz, że to nie jest najlepsze rozwiązanie, ale najprostsze. Jak je opanujesz to możemy przejść do lepszych.

0

dziękuję za pomoc :) do lepszych tzn ?

0

Na przykład żeby nie odwoływać się bezpośrednio do WebBrowser z poza Form1. Za mało dałeś jednak informacji żeby mówić o konkretach.

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