Używam Microsoft Visual Studio 2005.
Formularz definiuje następująca klasa, na przykład:
public partial class Form1 : Form
{
List<Oprawa> Oprawy = new List<Oprawa>();
List<Lampa> Lampy = new List<Lampa>();
List<double> Wspolczyn = new List<double>();
int NowaLampaInd;
int Wybor;
public int TestInt(string x)
{
int y, res;
try
{
y = int.Parse(x);
res = 1;
}
catch
{
res = 0;
}
return res;
}
public void Info(string Msg)
{
MessageBox.Show(Msg, "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public Form1()
{
InitializeComponent();
}
}
W tej klasie umieszcza sie metody wykonywane przy akcjach takich, jak klikanie przycisków. Można także umieścić dowolne dodatkowe definicje zmiennych i metody.
Program działa na obiektach między innymi klasy Oprawa:
public class Oprawa
{
public bool Zmieniono;
public string Nazwa;
public int Sprawnosc;
private Bitmap Rozsyl;
public Bitmap Plan;
public int IloscLamp;
public Oprawa(string Nazw,string RozsylBmp)
{
IloscLamp = 0;
Nazwa = Nazw;
Sprawnosc = 100;
Rozsyl = new Bitmap(RozsylBmp);
BmpNazwa = RozsylBmp;
}
}
Załóżmy, że w klasie Oprawa chcę dopisać metodę PokazInfo(), której efektem jest wywołanie metody Info z parametrem "To jest oprawa!".
Zrobiłbym tak:
public PokazInfo()
{
Form1.Info("To jest oprawa!");
}
W ten sposób to nie chce działać. W jaki sposób mam napisać metodę PokazInfo()? W analogiczny sposób chciałbym się dostać do elementów położonych na formularzu, np. w celu wykorzystania paska postępu w przypadku wykonywania pętli typu "for".