Dynaamiset kontrollit, omat luokat

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

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/gko/luennot/luento3/
© Antti Ekonoja (antti.j.ekonoja@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
2012-03-22 14:06:19
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta