20. PictureBox, ProgressBar

A PictureBox-ot akkor használjuk, ha egy képet akarunk beilleszteni egy felületre. Természetesen legegyszerűbben az  IDE-kben levő designer felület segítségével tudjuk az objektumot létrehozni. Kódból is létre lehet hozni. Ennél a vezérlő típusnál a legfontosabb, hogy egy a fájlrendszerben lévő képet be tudjunk illeszteni. Az alábbi példában kódból hozunk létre egy PictureBox objektumot, majd egy eseménykezelőben a fájlrendszerből kiválasztunk egy fájlt és megjelenítjük az ablakban.

void ImageClick(object sender, EventArgs e)
{
    string fn = "D:\\kep.jpg";

    //Filekereső ablak
    OpenFileDialog od = new OpenFileDialog();
    od.Filter = "(JPEG file)|*.jpg|(PNG file)|*.png";
    if ( od.ShowDialog() == DialogResult.OK) 
    {
        fn = od.FileName;
    }

    PictureBox pb = new PictureBox();
    pb.Width = 600;
    pb.Height = 400;
    pb.Image = new Bitmap(fn);
    pb.SizeMode = PictureBoxSizeMode.Zoom;
    this.Controls.Add(pb);
}

​ProgressBar objektumot olyan alkalmakkor használjuk, amikor egy folyamat sokáig tart és annak az előrehaladásáról szeretnénk a felhasználót tájékoztatni. Ezzel azért van egy kis probléma. Ha nagyon gyorsan változik egy felületen valamilyen érték és attól függő a folyamat előrehaladása, akkor a ProgressBar frissítése viszonylag sokáig tarthat, ezért nem biztos, hogy szabad használni ezt a vezérlőt.

A kódnak be kell állítani a kezdőértékét és a vég értékét:

progressBar1.Minimum=1 // default érték = 0;
progressBar1.Maximum=
1000   //default érték = 100

Amikor frissíteni akarod a progressbart, akkor be kell állítani:

progressBar1.Value=12  //Az aktuális érték

Az alábbiakban egy Fibonacci számok kiszámolására használható kódot mutatok be.

void StartClick(object sender, EventArgs e) //Annak a gombnak az eseménykezelője, amivel indít a program
{
  int n;
  Sol.Text ="";
  db = 0;			
  try{
    n = Convert.ToInt32(N.Text);
    pb.Minimum = 0;                //A progressbar minimális értékének beállítása
    pb.Maximum = n;                //A progressbar maximális értékének beállítása
    for (int i=0;i<=n; i++){
      Sol.AppendText("db="+db+", n="+i+ ", Eredmény:"+Convert.ToString(Fibonacci(i))+"\n");
      pb.Value = i;                //A ProgressBar aktuális értékének beállítása
    }
  }catch{
      Sol.Text = "Csak pozitív egész szám lehet!";
  }	
}
//A Fibonacci függvény (metódus)
int Fibonacci(int n){
  int Fib;
  db++;
  if(n<1){
    Fib = 1;
  }else if(n<2){
    Fib = 1;
  }else{
    Fib = Fibonacci(n-2) + Fibonacci(n-1);
  }
  return Fib;
}