• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# zmienne między formami

Object Storage Arubacloud
0 głosów
2,055 wizyt
pytanie zadane 5 lipca 2016 w C# przez niezalogowany
Witam, w sumie zawsze się borykałem z tym problemem i to nie tylko w C#, muszę przesłać zmienne do innej formy, lecz muszę pracować tam na oryginałach. Myślę nad tym już długo i nadal nie mam nadal pomysłu jak to zrobić. Czy ktoś wie jak to zrobić??

1 odpowiedź

0 głosów
odpowiedź 5 lipca 2016 przez obl Maniak (51,280 p.)
wybrane 5 lipca 2016
 
Najlepsza
Jeżeli masz sobie okno główne twojego programu, w którym to chcesz np. po kliknięciu jakiegoś przycisku wywołać jakieś inne okno (formę) to przecież podczas tworzenia takiej formy musisz użyć jej konstruktora. Teraz co stoi na przeszkodzie, aby do standardowej listy argumentów konstruktora dodać jakiś inny własny argument np. obiektu klasy znajdującego się w głównym oknie programu. Przy tworzeniu okna jako argument podajesz tą klasę (w C# klasy są typami referencyjnymi) i możesz operować wewnątrz innej formy na obiekcie tejże klasy. Oczywiście wewnątrz klasy nowo utworzonego okna wypadałoby przechowywać tą klasę w jakiejś zmiennej.
komentarz 5 lipca 2016 przez niezalogowany

nie kumam tego:

Przy tworzeniu okna jako argument podajesz tą klasę (w C# klasy są typami referencyjnymi) i możesz operować wewnątrz innej formy na obiekcie tejże klasy.

 resztę kumam i jak mam pracować na oryginale skoro przypisuję tę wartość innej zmiennej??

komentarz 5 lipca 2016 przez obl Maniak (51,280 p.)
Powiedziałem, że klasa jest typem referencyjnym a to oznacza, że jak podajesz ją jako argument jakiejś metody innej klasy to kopiowany jest wskaźnik na miejsce, gdzie obiekt w pamięci komputera się znajduje a nie cały obiekt jak w C++-sie i dlatego możesz operować bezpośrednio na tejże klasie podając ją jako argument w konstruktorze.

Co innego jak masz dane zapisane w strukturze bo ta w C# nie jest typem referencyjnym.
komentarz 5 lipca 2016 przez niezalogowany

Czyli to ma wyglądać tak??

public Form2(Form1 a)
        {
            InitializeComponent();
        }

i jeśli tamte zmienne są prywatne to przecież tak nie mogę się do nich dostać

komentarz 5 lipca 2016 przez obl Maniak (51,280 p.)

Tak też można, a jeżeli zmienne są prywatne to możesz je ustawić jako publiczne (choć to nie jest zalecane), lub dodać właściwości umożliwiające operowanie na nich. Można też zrobić coś takiego:

public Form2(Form a, TwojaKlasa mojeDane){
    // i tutaj robisz z danymi przekazanymi za pomocą klasy mojeDane co ci się żywnie podoba
}

Gdzie Form to jest po prostu wskaźnik do okna rodzica, a obiekt klasy TwojaKlasa zawiera dane, które chcesz udostępnić oknu potomnemu.

Można też ograniczyć dostęp poprzez interfejsy.

komentarz 5 lipca 2016 przez niezalogowany
ja w C# jeszcze aż tak zaawansowany nie jestem, ale dzięki za pomoc. Będę coś z tym robić, przynajmniej mam już zarys. Dzięki :)

Podobne pytania

+1 głos
3 odpowiedzi 504 wizyt
pytanie zadane 18 maja 2021 w C# przez disaster Bywalec (2,120 p.)
0 głosów
0 odpowiedzi 183 wizyt
pytanie zadane 13 lutego 2018 w C i C++ przez Kapciochowacz Nowicjusz (140 p.)
+2 głosów
0 odpowiedzi 270 wizyt
pytanie zadane 13 kwietnia 2017 w C# przez liledusty Obywatel (1,430 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...