如何更改图片框(winform)的边框颜色?

我想根据不同的事件打开和关闭图片框周围的边框颜色/样式。

是否有属性或function可以帮助我实现这一目标?

Winforms不允许您更改控件的边框颜色,它们由用户选择的主题修复。 获得所需内容的最简单方法是不需要编写自己的控件,将图片框放在Panel中,使其略小一些。 然后只需更改面板的BackColor。

设计师会尝试将控件与网格对齐,直接在“属性”窗口中编辑“位置”和“大小”属性,而不是将其混合,因此设计师会对您进行一些打击。

这一直是我用来做的:

要更改边框颜色,请从Picturebox控件的Paint事件处理程序中调用它:

 private void pictureBox1_Paint_1(object sender, PaintEventArgs e) { ControlPaint.DrawBorder(e.Graphics, pictureBox1.ClientRectangle, Color.Red, ButtonBorderStyle.Solid); } 

要动态更改边框颜色,例如从鼠标点击事件,我使用图片框的Tag属性来存储颜色并调整图片框的Click事件以从那里检索它。 例如:

  if (pictureBox1.Tag == null) { pictureBox1.Tag = Color.Red; } //Sets a default color ControlPaint.DrawBorder(e.Graphics, pictureBox1.ClientRectangle, (Color)pictureBox1.Tag, ButtonBorderStyle.Solid); 

那么,picturebox Click事件会是这样的:

 private void pictureBox1_Click(object sender, EventArgs e) { if ((Color)pictureBox1.Tag == Color.Red) { pictureBox1.Tag = Color.Blue; } else {pictureBox1.Tag = Color.Red; } pictureBox1.Refresh(); } 

你需要using System.Drawing; 在开始时不要忘记最后调用pictureBox1.Refresh() 。 请享用!

这是一个简单的例子 (在VB.NET中,但转换起来应该很简单),它可以帮到你。 你不必担心使用像Passant那样的额外面板。

如果您正在讨论鼠标事件,则可以使用MouseEnter和MouseLeave或MouseHover事件来执行此操作,并且可以使用OnPaint事件进行实际绘制。 只是使上面提到的鼠标事件或您关心的任何事件上的PictureBox无效。