Dynaamiset kontrollit, omat luokat
- Luento Youtubessa
- tjlahton2012-02-06_1220.mp4 34.0 Mt
- tjlahton2012-02-06_1220.wmv 50.3 Mt
- tjlahton2012-02-06_1220.mp3 16.3 Mt
Luentoesimerkki (Luentoesimerkki zip-paketti)
Dynaamiset kontrollit
Kontrolleja voi luoda dynaamisesti seuraavalla tavalla:
TextBox uusiboksi = new TextBox(); // luodaan uusi kontrolli
// tehdään haluttaessa tarpeellisia alustuksia mm. kontrollin koko
uusiboksi.Location = new System.Drawing.Point(110, 50);
uusiboksi.Size = new System.Drawing.Size(100, 20);
// lisätään kontrolli halutun lomakkeen Controls-listaan
Controls.Add(uusiboksi);
Omat luokat
Jos kontrollin on tarkoitus tehdä mitään monimutkaisempaa niin on järkevää tehdä siitä oma luokka.
public class Auto : PictureBox {
private int nopeus = 10;
private System.Windows.Forms.Timer ajastin = new System.Windows.Forms.Timer();
public Auto()
{
this.Image = global::dynaamiset.Properties.Resources.car;
this.ParentChanged += new System.EventHandler(this.OnParentChanged);
this.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.TabStop = false;
ajastin.Enabled = true;
ajastin.Tick += new System.EventHandler(this.ajastin_Tick);
}
// parentiin eli tässä tapauksessa lomakkeeseen voidaan viitata vasta, kun kontrolli on lisätty lomakkeelle
// eli ei vielä suoraan konstruktorissa vaan esim. ParentChanged-tapahtuman jälkeen
private void OnParentChanged(object sender, EventArgs e)
{
Random r = new Random();
this.Location = new System.Drawing.Point(r.Next(0, Parent.ClientSize.Width-ClientSize.Width), r.Next(0, Parent.ClientSize.Height-ClientSize.Height));
}
private void ajastin_Tick(object sender, EventArgs e)
{
if (Left <= 0) nopeus = -nopeus;
if (Right>= Parent.ClientSize.Width) nopeus = -nopeus;
Left = Left + nopeus;
}
}
Käyttäjien kommentit