Zadanie domowe odrobiłem!
Wszystkim dziękuję serdecznie za wskazanie drogi!
Piszę program w C# do obliczeń parametrów układów lampowych – siedzę we wzorach, czwórnikach, typach lamp, etc. Kto miał na studiach wykład z elektroniki, wie o czym mówię. C# jest w tym momencie dla mnie trudnym narzędziem, którym jestem zafascynowany.
- Mam formę Form1 zawierającą jedną etykietę i dwa przyciski, w pliku ‘Form1.designer.cs’ ustawiłem ‘public’ w miejsce generowanego automatycznie ‘private’:
public void InitializeComponent()
public System.Windows.Forms.Label label1;
...
this.label1.Text = "label1";
...
public System.Windows.Forms.Button button1;
public System.Windows.Forms.Button button2;
- Buduję klasę ‘klasa1’:
class klasa1
{
public klasa1(ref Label lab1 )
{
lab1.Text = "xxxxxx";
}
}
Wywołanie klasy następuje z przycisku pierwszego:
private void button1_Click(object sender, EventArgs e)
{
klasa1 k1 = new klasa1(ref label1);
}
Działa. Etykieta zmienia wartość. Referencja działa, jak należy.
- Buduję klasę ‘klasa2’:
class klasa2
{
public klasa2(ref Form F1)
{
F1.Show();
//label1.Text = "XXXXXXXXX";
}
Wywołanie obiektu klasy następuje z przycisku drugiego:
private void button2_Click(object sender, EventArgs e)
{
Form F1 = new Form1();
klasa2 k2 = new klasa2(ref F1);
}
Działa. Otwiera się nowe okno z nową formatką F1 dokładnie w postaci Form1.
- Mam takie pytanie: skoro do obiektu klasy2 przekazałem referencję formy Form1, to dlaczego nie mogę pisać bezpośrednio w metodzie tej klasy:
label1.Text = "xxxxxxx";
Czegoś tu nie rozumiem, czy przekazanie referencji do formy nie jest równoznaczne z przekazaniem referencji do obiektów tej formy?
-
Jak zgasić formatkę Form1, kiedy otwarła się ona w nowym wcieleniu F1?
I jak ją powrotem wyświetlić, kiedy zamknie się F1?
-
Jak rozumiem, to rozwiązanie określone, jako ‘doraźne’ nie jest w pełni w duchu metodologii obiektowej.
Należałoby zadeklarować klasę z własną definicją formatki z jej wszystkimi wymaganymi obiektami w konstruktorze i z poziomu metod klasy sterować zawartością i wizualizacją poszczególnych jej obiektów.