Zmienne - Pomocy

0

Witam, jestem początkującym w c#. Piszę swoją pierwszą aplikację i mam problem. Problem polega na tym że nie potrafię przenieść zmiennej z jednego okienka do drugiego. Próbowałem na kilka sposobów pokazanych w internecie ale nie zadziałało mi to.

Tutaj posiadam zmienną (public int UID;) -> public partial class Logowanie : Form

Chciałbym użyć tej zmiennej w drugim okienku (OknoGlowne) -> public partial class OknoGlowne : Form

https://i.imgur.com/TYE4a8H.png

Prosiłbym o pomoc :(

1

Jeżeli dopiero się uczysz to najprościej przekazać obiekt przez konstruktor klasy OknoGlowne i w samej już klasie zapisać zmienną jako pole prywatne.

0

obrazkami nie programujemy (da sie, ale to nie ten jezyk).

  1. Opisz co chcesz osiagnac i dlaczego
  2. Pokaz kod jak to robisz / jak chcesz to zrobic
0

Obrazek był tylko po to aby pokazać mniej więcej jak struktura (o ile to można tak nazwać) wygląda.

Okienko nazwane: Logowanie zostaje schowane po wpisaniu danych i po połączeniu z MySql oraz potwierdzeniu prawidłowości wpisanych danych. Następnie okno to jest chowane za pomocą: this.Hide(); oraz dzieje się w tedy kod:

OknoGlowne menu = new OknoGlowne();
menu.Show();

Całość wygląda tak:

if(HasloWpisane == haslo_wpisane)
{
OknoGlowne menu = new OknoGlowne();
menu.Show();
this.Hide();

wtedy kiedy używam this.Hide i dalszy kod dzieje się już w OknoGlowne.cs chciałbym tam przekazać jedną zmienną np UID, jest ona mi potrzebna do lokalizowania danych danego gracza w dalszym kodzie który będzie w OknoGlowne.cs

1

No to przekaż przez konstruktor klasy OknoGlowne tak jak Ci napisałem. Najprościej, choć metod jest multum ale ta jest najprostsza dla początkującego.

0

Tyle że nie bardzo wiem jak to zrobić, jeszcze raczej mam zbyt mało praktyki. Mógłbyś nakreślić mi jakiś przykład na którym mógłbym się wzorować?
Wiem gotowce są blee i ja też tak nie chce ale muszę troszkę też widzieć bo na chwile obecną ciężko mi samemu to ogarnąć.

1

Prosty przykład: https://ideone.com/pT83eo

0

Zobaczyłem jak to wygląda, próbowałem zrozumieć i napisać, napisałem wywaliło mi błędy więc już w akcie desperacji chciałem sprawdzić czy zadziała kopiując i mam teraz taki problem:

https://i.imgur.com/d3e8wAE.png
https://i.imgur.com/h8j01UU.png
https://i.imgur.com/KaEmIPw.png

0

Spróbuj tak:

OknoGlowne oknoglowne = new OknoGlowne(UID);
oknoglowne.ShowDialog;

W OknoGlowne po InitializeComponent() wpisz coś takiego:

public int parametr1 = parametr;

I dalej używaj w oknie parametr1

0
endrius napisał(a):

Spróbuj tak:

OknoGlowne oknoglowne = new OknoGlowne(UID);
oknoglowne.ShowDialog;

W OknoGlowne po InitializeComponent() wpisz coś takiego:

public int parametr1 = parametr;

I dalej używaj w oknie parametr1

W ten sposób nie działa, cały program sypie błędami.

0

To jest wycinek ode mnie z jakiegoś starocia. I zawsze działa

Window1 window1 = new Window1(kod_prac.Text.ToString(), imie_nazwisko);
window1.ShowDialog();

W tym kod_prac.Text.ToString() to jest to textbox, a imie_nazwisko to wynik pobrania z bazy

0
endrius napisał(a):

To jest wycinek ode mnie z jakiegoś starocia. I zawsze działa

Window1 window1 = new Window1(kod_prac.Text.ToString(), imie_nazwisko);
window1.ShowDialog();

W tym kod_prac.Text.ToString() to jest to textbox, a imie_nazwisko to wynik pobrania z bazy

No dobrze ale czy na pewno dążymy do tego aby przenieść dane jednej zmiennej z jednej Aplikacji Windows do drugiej (ten sam projekt)

Aktualnie zrobiłem sobie tak że Logowanie tworzy plik i tam zapisuje liczbę a potem te drugie okno po zalogowaniu które jest odczytuje to z tego pliku no ale lepiej by było gdyby można to było zrobić bez pliku :/

1

@adi888: pierwsze co na pewno musisz zrobić to douczyć się podstaw. Nie wiedząc nawet co to jest konstruktor daleko nie zajedziesz.

0

No i co mi to da że np teorię znam na pamieć a praktycznie jej zastosowanie jest znikome. Wolę coś rozumować z praktyki i jego zastosowania niż z teorii

0

Wiesz co to jest konstruktor?? To napisz konstruktor do klasy OknoGówne, który w parametrze bedzię przyjmował cokolwiek co tam potrzebujesz.

0

class test
{
public test(int x)
{

}
}
test Kl = new test();

hmm?
Ciężko mi jeszcze teorię przekładać na praktykę bo obcuję z tym jęzorem 2 dni dopiero.

0

Chwila jeżeli jest to tak jak w c++ to konstruktor musi mieć taką nazwę jak klasa. Więc jeżeli robię całe logowanie w klasie Logowanie to tworzę konstruktor w taki sposób ? -> Logowanie(int);

A później jak się do niego odwołać?

Logowanie::Logowanie(int zmienna)
{
//kod
}

0

Po pierwsze, używaj znaczników do oznaczania kodu, żeby dało się toto czytać :)

class Przyklad
{
   public Przyklad(int zmiennaPrzykladowa) { } 
}

I później odwołujesz się do niego tak:

Przyklad przykladowyObiekt = new Przyklad(zmiennaPrzekazanaDoKonstruktora)

Szlag, na telefonie źle się pisze...

0

Nie mam pojęcia cóż tam za błąd Ci rzuciło, ale stawiam, że zapomniałem publica przy konstruktorze i stało się nieszczęście, bo jeśli się nie mylę, to domyślnie będzie on chroniony, a co za tym idzie, nie masz do niego dostępu :)

Mylę się, herezja. Konstruktor musi mieć zdefiniowany modyfikator dostępu.

0

Wiem że truję ale nie chce mi to działać, wrzucam troszkę więcej:

https://i.imgur.com/Q6sHUOT.png
https://i.imgur.com/DyI6o8m.png

Teorię z klasami i konstruktorami przeczytałem ze 2x wolno i dokładnie, mam nadzieję że dobrze to zrozumiałem a jeżeli nie to możecie mnie poprawić? Z góry dziękuję za pomoc, mam nadzieję że da się tego UID'a ogarnąć :D

0

https://i.imgur.com/sVeCikV.png
https://i.imgur.com/LDDemSZ.png
https://i.imgur.com/xPSp1Ah.png

Kombinowałem w ten sposób jeszcze, wykompilowało ale podczas debugowania wyrzuca mi błąd :(

1

"Jeżeli dopiero się uczysz to najprościej przekazać obiekt przez konstruktor klasy OknoGlowne i w samej już klasie zapisać zmienną jako pole prywatne."

Teoria o konstruktorach + ta wypowiedź sprawiła że zadziałało :D
Dzięki wszystkim za pomoc ;*

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