none
C# picturebox1'in imagesini tıklanılan picturebox ile değiştirme RRS feed

  • Soru

  • Arkadaşlar elimde 50 ye yakın picturebox bunların her birinin click eventine yazmak istemiyorum

    programın load'ına yazdım bi klasör var resimleri klasörden alıyorum klasörün içersinde kaç tane resim varsa program açılırken o kadar picurebox üretiyorum resimleri sırayla pictureboximage yapıyorum.

    Arkadaşlar benim sorunum şu programımın içerisinde bir tane picturebox var diğer pictureboxlar program çalıştıkdan sonra oluşuyor ve iageleri atanıyor benim istediğim şey program açıldıkdan sonra atanan bu imagelerden birine tıklayınca picturebox'un imagesi  onunla değişsin.

    kodları şöyle:

    private void Form1_Load(object sender, EventArgs e)
            {
                int resim_sayisi =  Directory.GetFiles(@"C:\Users\özcan\Desktop\ozcan\mekatronİK\C#\NişanGah\nişanlar\saydam Nişanlar", "*.*", SearchOption.AllDirectories).Length;;
                int j = 10;
                PictureBox[] resimler = new PictureBox[resim_sayisi];
    
                for (int i = 1; i < resim_sayisi; i++)
                {
                    resimler[i] = new PictureBox();
                    resimler[i].Name = "Resim-" + i.ToString();
                    resimler[i].Location = new Point(panel1.Width / 3, j);
                    resimler[i].ImageLocation = @"C:\Users\özcan\Desktop\ozcan\mekatronİK\C#\NişanGah\nişanlar\saydam Nişanlar\\" + i + ".png";
                    resimler[i].Visible = true;
                    resimler[i].BackColor = Color.Transparent;
                    resimler[i].SizeMode = PictureBoxSizeMode.AutoSize;
    
                    this.Controls.Add(resimler[i]);
                    resimler[i].BringToFront();
                    j = j + 60;
    
                    panel2.Controls.Add(resimler[i]);
                    resimler[i].MouseClick += new MouseEventHandler((o, a) => clk(i));
                }
            }
    
            void clk(int i)
            {
                pictureBox5.ImageLocation = @"C:\Users\özcan\Desktop\ozcan\mekatronİK\C#\NişanGah\nişanlar\saydam Nişanlar\" + i + ".png";
            }


    20 Nisan 2016 Çarşamba 13:45

Yanıtlar

Tüm Yanıtlar

  • Deleted
    20 Nisan 2016 Çarşamba 13:50
  • döngü içinde aynı zamanda Click eventini de oluştur.

    resimler[i].Click += resimler_Click;
    
    
    private void resimler_Click(object sender, EventArgs e)
    {
        digerPictureBox.Image = ((PictureBox)sender).Image;
    }


    try { OldugunGibiGorun(); } catch (BeceremedimException) { GorundugunGibiOl(); }

    Mükemmleden bir adım daha ileri
    20 Nisan 2016 Çarşamba 13:53