Dwie klasy w osobnych plikach, wartości się gubią C#


(bibut) #1

Witam,

Otóż zabrałem się za C# i nieudolnie próbuje przenieść wartość między klasami w osobnych plikach...

Mamy klasę Form1. Zakładajmy, że wywołujemy z niej metodę innej klasy (Class1) która będzie poprzez metodę klasy Form1 ustawiać wartość label1.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void get(string a)
        {
            label1.Text = a;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Class1 fo = new Class1();
            fo.send();
        }
    }

oraz Class1:

class Class1
    {

        public void send()
        {
            Form1 fo = new Form1();
            fo.get("aaa");
            
        }
    }

Co tu jest nie tak? Widzę, że wartość wchodzi do label1, ale kiedy kończy się metoda to wszystko wraca do poprzedniego stanu.


(Jim1961) #2

Tworząc nowy obiekt klasy Form1, nie dostaniesz wartości z jej pierwszej instancji. Przerób metodę send tak, aby przyjmowała obiekt klasy Form1 i wywołując ją podaj jako parametr “this”, co będzie oznaczało że przekazujesz bieżący kontekst, wraz z tym label1. Coś a’la:

public void send(Form1 toOkno)
{
    toOkno.get("whatever");
}

Wartość wchodzi do label, bo otwiera się nowe okno, ustawia wartość, a po zakończeniu metody okno znika -> user widzi pierwsze okno.

 

BTW. Twój “get” powinien nazywać się “set”, w końcu coś ustawia.


(bibut) #3

Bardzo Ci dziękuję, w końcu coś mi działa.

 

BTW. “get”, bo miałem na myśli, że bierze tą wartość :wink: