Zesięgi zmiennych – użycie zmiennej w zdarzeniu button_Click

0

Witam. Mam problem i nie wiem jak użyć zmiennej w zdarzeniu button_Click, której wartość jest nadawana poza zdarzeniem.

public partial class Window6 : Window
    {
        public Window6(string a, string b)
        {
            InitializeComponent();
            Poj.Text = a;
            Def.Text = b;
        }
        private void b1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(a);
            MessageBox.Show(b);
        }
    }

Oto fragment mojego programu. Przy otwarciu okna przenoszę 2 zmienne z poprzedniego okna do pól tekstowych Poj i Def. Użytkownik wtedy zmienia zawartość textboxów, a następnie klika przycisk b1. Po kliknięciu przycisku program ma wyświetlać wartości pól tekstowych sprzed edycji. Chciałbym wiedzieć, czy jest możliwość, by dostać się do wartości zmiennych a i b z poziomu b1_Click. Wiem, że można to zrobić za pomocą klasy GlobalData, ale pytam czy jest jakaś łatwiejsza, szybsza możliwosć.
Z góry dziękuję za pomoc :)

0

Stwórz sobie w swojej klasie Window6 pola przechowujące wartości.

To jest dokładnie to samo, co problem w tym wątku: Obiekty a obsługa zdarzeń - popatrz na odpowiedź moją lub ekhart.

0

Ech, skąd się uczysz programować, skoro nie znasz żadnych podstaw?

Szybkie szkolenie za free. Zasięgi zmiennych.
Każda zmienna ma swój zasięg. Tzn., że jest widoczna tylko w pewnym fragmencie programu. To "zakres widoczności zmiennej (inaczej - zasięg)". Zmienne jest widoczna w granicach bloku kodu. Blok kodu to fragment między klamerkami:

{
//jestem blokiem kodu, tworzę sobie zmienną o nazwie i:
int i = 5;
}

{
//jestem innym blokiem kodu, tworzę sobie zmienną o nazwie i
int i = 8; 
}

Te bloki nie wiedzą o swoim istnieniu. Każda zmienna i istnieje tylko w ich zasięgu.

A co jeśli zrobię tak?

{
  string s = "Siema!";
}

{
  string k = s;
}

Skąd drugi blok ma wiedzieć, że istnieje jakaś zmienna s w innym bloku? Drugi blok nie ma pojęcia o istnieniu pierwszego bloku, więc nie może też posługiwać się jego zmiennymi. Zmienne żyją tylko w obrębie bloku.

Jak się pewnie domyślasz blokiem może być cokolwiek między klamerkami. Metoda, klasa, blok (po prostu dodatkowe klamerki w metodzie), blok try..catch itd.

0

Coś w ten deseń

public struct DefaultValues
        {
            public string PoleA;
            public string PoleB;
        }

        public static DefaultValues MyDef;

        public partial class Window6 : Window
    {
        public Window6(string a, string b)
        {
            InitializeComponent();
            MyDef.PolaA=a;
            MyDef.PolaB=b;
            Poj.Text = a;
            Def.Text = b;
        }
        private void b1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(MyDef.PolaA);
            MessageBox.Show(MyDef.PolaB);
        }
    }


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.