PictureBox上的动态点击事件
我从目录中获取图片列表,并将文件名存储在List
。 然后我循环遍历其中的每一个并为每个创建一个PictureBox
,然后我将相同的click事件添加到每个。 控件位于FlowLayoutPanel
foreach(String 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 }
如何获取已单击并设置其边框颜色的那个?
sender
是被点击的PictureBox
:
private void PictureClick(object sender, EventArgs e) { PictureBox oPictureBox = (PictureBox)sender; // add border, do whatever else you want. }
sender
参数确实是你的PictureBox
,downcast到object。 以这种方式访问它:
var pictureBox = sender as PictureBox;
在它周围绘制边框可能不是那么容易,因为您必须覆盖PictureBox的OnPaint
方法,或者处理Paint
事件。
您可以使用此类在图像周围绘制黑色细边框。
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); } }