我想根据不同的事件打开和关闭图片框周围的边框颜色/样式。
是否有可以帮助我实现这一目标的属性或功能?
答案 0 :(得分:5)
Winforms不允许您更改控件的边框颜色,它们由用户选择的主题修复。获得所需内容的最简单方法是不需要编写自己的控件,将图片框放在Panel中,使其略小一些。然后只需更改面板的BackColor。
设计师会因为它试图将控件与网格对齐而直接编辑“属性”窗口中的“位置”和“大小”属性而不是将其混合而对你有所帮助。
答案 1 :(得分:4)
这一直是我用来做的:
要更改边框颜色,请从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);
图片框点击事件,然后会是这样的:
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()
。享受!
答案 2 :(得分:2)
这是一个simple example(在VB.NET中,但转换起来应该很简单),它可以帮到你。你不必担心像Passant那样使用额外的面板。
答案 3 :(得分:1)
如果您正在谈论鼠标事件,则可以使用MouseEnter和MouseLeave或MouseHover事件来执行此操作,并可以使用 OnPaint 事件进行实际绘图。只是使上面提到的鼠标事件或您关心的任何事件上的PictureBox无效。