Je reçois une liste d’images d’un répertoire et stocke les noms de fichiers dans une List
. Je passe ensuite en boucle dans chacun d’eux et crée un PictureBox
pour chacun d’eux, puis j’ajoute le même événement de clic à chacun d’eux. Les contrôles sont dans un FlowLayoutPanel
foreach(Ssortingng file in this._files){ PictureBox box = new PictureBox(); box.Height = 50; box.Width = 50; box.ImageLocation = file; box.SizeMode = PictureBoxSizeMode.Zoom; box.Click += this.PictureClick; this.flowLayoutPanel1.Controls.Add(box); } private void PictureClick(object sender, EventArgs e){ // how do I get the one that has been clicked and set its border color }
Comment obtenir celui qui a été cliqué et définir sa couleur de bordure?
sender
est le PictureBox
lequel vous PictureBox
cliqué:
private void PictureClick(object sender, EventArgs e) { PictureBox oPictureBox = (PictureBox)sender; // add border, do whatever else you want. }
Le paramètre sender
est bien votre PictureBox
, downcast to object. Accédez-y de cette façon:
var pictureBox = sender as PictureBox;
Dessiner une bordure autour de celle-ci ne pourrait pas être aussi facile car vous devrez soit remplacer la méthode OnPaint
de PictureBox, soit gérer l’événement Paint
.
Vous pouvez utiliser cette classe pour dessiner une bordure noire fine autour de votre image.
public class CustomBorderPictureBox : PictureBox { public bool BorderDrawn { get; private set; } public void ToggleBorder() { BorderDrawn = !BorderDrawn; Invalidate(); } protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); if (BorderDrawn) using (var pen = new Pen(Color.Black)) pe.Graphics.DrawRectangle(pen, 0, 0, Width - 1, Height - 1); } }