widzialnosc skladnika z poziomu innej formy

0

witam wszystkich serdecznie. dotychczas pisalem w c++. od kilku miesiacy ucze sie C#.
moj problem polega na czyms takim:
Form1 zawiera statusStrip, na ktorym wyswietla informacje.
Z poziomu Form2 chce zmienic zawartosc statusStrip ale nie mam do niego dostepu. Wlasciwosci kontrolki statusStrip zawieraja pole Modifiers. Ustawienie go na public nic nie daje.
Jak dostac sie do sladnikow jednej formy z poziomu innej?

ps. objekt klasy Form2 jest tworzony z poziomu klasy Form1.

pozdrawiam
Mariusz

0

Poszukaj w kodzie deklaracji tej skladowej i zmien na public. Powinno pomoc.
Ostatecznie mozesz napisac metode, ktora go zwroci.

pozdrawiam
johny

0
johny_bravo napisał(a)

Poszukaj w kodzie deklaracji tej skladowej i zmien na public.

Przepraszam ze sie wtrace, ale co masz na mysli?

0
Tomasz Stężycki napisał(a)
johny_bravo napisał(a)

Poszukaj w kodzie deklaracji tej skladowej i zmien na public.

Przepraszam ze sie wtrace, ale co masz na mysli?

Skoro StatusStrip jest na formularzu to jest gdzies w kodzie zadeklarowany, ustawiony, przypisany, itd - zazwyczaj w sekcji Initialize, ew. osobnym pliku, jesli to ktorys z produktow do framework'a 2.0. Niech sobie wiec znajdzie deklaracje tej skladowej (bo tak bedzie zadeklarowany) i zmieni na public.

pozdrawiam
johny

0

tak tez wlasnie zrobilem w designerze Form1:

    public System.Windows.Forms.StatusStrip statusStrip;
    public System.Windows.Forms.ToolStripStatusLabel statusStripLoginStatus;

tyle, ze z poziomu obiektu klasy Form2 dalej nie mam do niego dostepu.
dodam, ze dziala zmiana widzialnosci obiektu z private na public dokonana zarowno z poziomu properties jak i recznie w designerze. zmiana w properties pociaga za soba zmiane w designerze i odwrotnie.

pozdrawiam
Mariusz

0

A w jaki sposob probujesz sie do niego dostac? Moze tu lezy przyczyna?

pozdrawiam
johny

0

Johny - a jaka widzisz roznice miedzy zmiana parametru w kodzie czy w okienku Properties? Bo ja zadnej.

aristo, ogolnie masz 2 wyjscia - albo przechwycic handlera pierwszej formatki z drugiej, albo wywolac 2 forme w trybie dialogu. przy czym polecam ten 2 sposob. Przykladowo:

Zalozenia:
* firstForm
-btnShowSecondForm (Private)
-txtFirstForm (Private)

    * secondForm
        -txtSecondForm (Public)

Wywolanie 2 formatki:

        Form2 secondForm = new Form2();
        secondForm.ShowDialog();
        txtFirstForm.Text = secondForm.txtSecondForm.Text;

I tak na przyszlosc - nie szalej z "public". Nie po to wymyslono hermetyzacje zeby ja teraz zlewac ;)

0
Tomasz Stężycki napisał(a)

Johny - a jaka widzisz roznice miedzy zmiana parametru w kodzie czy w okienku Properties? Bo ja zadnej.

Widze, a dokladnie nie wszystkie srodowiska ja widza. W Visualu 2003 na przyklad to dosc klasyczny problem.

pozdrawiam
johny

0

Ja uzywam VS2005 Ent.
Jeszcze raz opisze w skrucie. W glownej formie programu mam statusStripa. Z glownej formy wywoluje dialog Form2. I teraz z poziomu tego dialogu (z jednego z jego handlerow) probuje zmienic tekst w statusStripie glownej formy ale go nie widze, nawej jesli jest publiczny.

nie wiem czy to cos pomoglo, mam nadzieje ze chociaz troche.

pozdrawiam
Mariusz

0
johny_bravo napisał(a)

W Visualu 2003 na przyklad to dosc klasyczny problem.

Nie wierz we wszystko co ludzie mowia....

0
Tomasz Stężycki napisał(a)
johny_bravo napisał(a)

W Visualu 2003 na przyklad to dosc klasyczny problem.

Nie wierz we wszystko co ludzie mowia....

Alez ja go uzywalem, a nie sluchalem opinii :P I pare razy sie na to nadzialem wlasnie, poki nie przestalem ufac w pelni 'automatycznej' generacji kodu.

aristo: napisz kawalek kodu, ktorym probujesz sie odwolac do tego stripa.

pozdrawiam
johny

0

Spróbuj dopisać odpowiednie właściwości (get, set) ustawiając je na public. Sam teraz próbowałem zrobić podobną komunikację i ani publiczność komponentu, ani dodatkowe metody nie dawały mi wglądu w wartość mojego textBox'a (2 forma) z 1 formy. Dopiero publiczne get zadziałało i właściwie to nie wiem czemu tylko to, może jednak cos źle robiłem :)

0

reVis - 2 rozne formatki = 2 rozne obiekty ktore zupelnie sie nie znaja a chce wymusisc na sobie jakas akcje. Do mieszkania wchodzi Ci obcy facet i oznajmia, ze bedzie malowal sciany. Nawet fakt ze jestes pozytywnie nastawiony do ludzi (public), to raczej sie nie zgodzis - prawda ;)

0

Z tym, żę to ja chcę wpuścić malarza do swojego domu (tworzę instancję klasy Form2 wewnątrz zdarzenia Click buttonu z Form1) więc oczekuje, żę jeżeli on (Form2) deklaruje pozytywne nastawienie do ludzi (public) to ze mną porozmawia, a nie tylko odmaluje mieszkanie ;) Z tym, że udaję się to tylko przez właściwości, a nie przez metody public. Więc dalej nie wiem czemu :p

0

Czyli musisz sobie napisac kartke "bede z toba rozmawial" - a odpowiednikiem tej kartki w C# jest wlasnie "ShowDialog();"
:)

0
Tomasz Stężycki napisał(a)

Czyli musisz sobie napisac kartke "bede z toba rozmawial" - a odpowiednikiem tej kartki w C# jest wlasnie "ShowDialog();"
:)

Cos bzdury piszesz. ShowDialog po prostu pokazuje formatke ustawiajac rodzina na enabled=false i wlaczajac go z powrotem po zamknieciu wywolanej formatki. Przeciez to nie ma nic do dostepnosci lub jej braku do wlasciwosci, skladowych, czy metod...

pozdrawiam
johny

0

Zgadza sie.
Kto Ci powiedzial ze pisalem lub myslalem o "dostepnosci lub jej braku do wlasciwosci, skladowych, czy metod...?"

0
Tomasz Stężycki napisał(a)

Zgadza sie.
Kto Ci powiedzial ze pisalem lub myslalem o "dostepnosci lub jej braku do wlasciwosci, skladowych, czy metod...?"

Tak wyczytalem z kontekstu. Najwyrazniej nie zalapalem abstrakcji z 'kartka'. W takim razie przepraszam.

pozdrawiam
johny

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