Przełączanie się między dwoma otwartmi oknami w windowsforms

0

Witam Wszystkich,

jestem nowym członkiem tego forum więc z góry przepraszam, jeżeli coś robię niepoprawnie odnośnie umieszczania postów. Zwracam się do was z pytaniem i prośbą o pomoc. Mam prostą aplikację zawierającą dwa okna. Pierwsze zawiera obiekt Webbrowser i proste menustrip m.in. do "wywoływania" drugiego okna, a drugie zawiera textboxa i cztery buttony. Chciałem się was zapytać w jaki sposób, bez uruchamiania nowej "kopii" okna zawierajacego element Webbrowser oraz stosowanie hide() - show() (chyba, że jest w jakiś sposób konieczne ich użycie), przekazać adres strony znajdującej się w drugim formie do pierwszego z Webbrowserem. Będę wam bardzo wdzięczny za pomocne informacje:)

1

Podczas tworzenia tego drugiego okna (wywołanie "new") jako argument konstruktora podaj referencję do tego pierwszego okna (this). W ten sposób w konstruktorze tego drugiego okna możesz sobie zapisać tę referencję i skorzystać z niej później, np. wywołując metodę z argumentem z twoim adresem.

0

podpinając się pod pytanie, czy jeśli przekażę tak : new Form ( Form this, Class this ) to będę miał dostęp do metod, pól itp. i kontrolek formy bazowej ?

0

ja robie coś takiego zazwyczaj

         private void dodajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
            Dodawanie _Dodawanie = new Dodawanie();
            _Dodawanie.S = this;
            _Dodawanie.ShowDialog();
            WczytanieGatunkow();
        }

a już we właściwym formie

 public Start S;

oczywiście metody czy zmienne które mają być widoczne w drugim oknie muszą mieć "public"

0
wedlock napisał(a):

podpinając się pod pytanie, czy jeśli przekażę tak : new Form ( Form this, Class this ) to będę miał dostęp do metod, pól itp. i kontrolek formy bazowej ?

Nie dawaj dostępu do pól i metod, a zwłaszcza kontrolek jednego okna innym. W jednym oknie napisz publiczne metody, które wykonują żądane operacje na jego kontrolkach, a z pozostałych okien wywołuj te metody z odpowiednimi argumentami.

Upublicznianie dostępu do prywatnych elementów jest złamaniem jednej z podstawowych zasad programowania obiektowego, czyli hermetyzacji, wygląda niechlujnie, i znacznie utrudnia późniejsze wprowadzanie zmian w kodzie. Gdy np. dojdziesz do wniosku, że dane lepiej wyświetlać w DataGridView, a nie ListBox i zmienisz typ swojej kontrolki, to zmiany operacji na niej będziesz musiał wykonać we wszystkich miejscach, w których ją udostępniłeś. Ale jeśli zrobisz jedną metodę, tak jak ja proponuję, to zmiany będziesz musiał wprowadzić tylko w jednym miejscu.

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