[英]How can i draw a rectangle around a label control?
我向 form1 设计器添加了一个标签控件并为其分配了一些文本。 然后我做了标签鼠标点击事件:
private void label5_MouseClick(object sender, MouseEventArgs e)
{
DrawRectangleOnLabel = true;
label5.Invalidate();
}
和标签绘制事件:
private void label5_Paint(object sender, PaintEventArgs e)
{
if (DrawRectangleOnLabel == true)
{
e.Graphics.DrawRectangle(Pens.Red, 0, 0, label5.Width, label5.Height);
}
}
但是当我点击标签时我看到的是半矩形,只有矩形的左侧和顶部不存在/显示。
这是因为矩形是用笔宽1
绘制的,并且右侧和底部位于标签的边界之外。 只需将其缩小一像素:
e.Graphics.DrawRectangle(Pens.Red, 0, 0, label1.Width - 1, label1.Height - 1);
或者,您可以改用ControlPaint
方法:
ControlPaint.DrawBorder(e.Graphics, label1.DisplayRectangle,
Color.Red, ButtonBorderStyle.Solid);
这使您可以访问各种其他ButtonBorderStyle
s(虚线、虚线、插入、开始)。
为什么不在MouseClick
事件上尝试BorderStyle
属性。 并为所有标签分配单个事件。
label1.MouseClick += new EventHandler(this.AllLable_MouseClick);
label2.MouseClick += new EventHandler(this.AllLable_MouseClick);
label3.MouseClick += new EventHandler(this.AllLable_MouseClick);
private void AllLable_MouseClick(object sender, MouseEventArgs e)
{
Label lbl = (Label)sender;
if (lbl.BorderStyle == BorderStyle.FixedSingle)
lbl.BorderStyle = BorderStyle.None
else
lbl.BorderStyle = BorderStyle.FixedSingle
}
对于一个简单的“框”,只需添加一个 Forms.Panel 并将您的控件放在它上面。 然后将面板边框设置为 FixedSingle。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.