我为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);
}
}
但是,当我点击标签时,我看到的是半矩形,只有左边和上边缘,矩形的右边和底部不存在/显示。
答案 0 :(得分:0)
这是因为矩形是用笔宽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
(虚线,点线,插图,开头)。
答案 1 :(得分:0)
为什么不在BorderStyle
事件上尝试MouseClick
属性。并为所有标签分配单个事件。
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
}
答案 2 :(得分:0)
对于一个简单的“盒子”,只需添加一个Forms.Panel并将控件放在上面即可。然后将面板边框设置为FixedSingle。