Actually there is a code where PictureBox is created in a loop.
foreach (var pars in parsing) { var pn = new Panel(); pn.Size = new Size(166, 260); flow.Controls.Add(pn); var lb = new Label(); lb.Text = parsing[i].NameFilm; lb.Dock = DockStyle.Bottom; lb.Font = new Font("Comic Sans MS", 9.0f); lb.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); pn.Controls.Add(lb); var hd = new Label(); hd.Text = parsing[i].Quality; hd.Location = new Point (0,0); hd.Font = new Font("Comic Sans MS", 9.0f); hd.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); //#c70016 hd.BackColor = ColorTranslator.FromHtml("#c70016"); hd.Padding = new Padding(5,2,5,2); hd.AutoSize = true; pn.Controls.Add(hd); var pb = new PictureBox(); pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.Dock = DockStyle.Top; pb.Name = "pb" + i.ToString(); pb.Size = new Size(166, 246); pb.LoadAsync(parsing[i].ImageURl); pb.MouseClick += new MouseEventHandler((o, a) => Start(parsing[i].UrlFilm)); pn.Controls.Add(pb); i++; } Everything works fine except
pb.MouseClick + = new MouseEventHandler ((o, a) => Start (parsing [i] .UrlFilm)); When compiling, it gives an error that "Index is out of range".
If instead of i write [i-1]
pb.MouseClick += new MouseEventHandler((o, a) => Start(parsing[i-1].UrlFilm)); Then when you click on any pictureBox will open the last, in this case, the film.
How to make so that everyone pictureBox was appropriated the MouseEventHandler?
parsing[i-1]withpars- MonomaxPanelaccepts yourparsin the constructor. - Monomax