我向form1设计器添加了一个label控件,并给它分配了一些文本。然后我做了标签鼠标点击事件:
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);
}
}但是,当我单击标签时看到的是半矩形,只有左边和顶部,矩形的右和底部不存在/显示。
发布于 2014-09-03 02:30:32
这是因为矩形是用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(虚线、点、内嵌、开始)。
发布于 2014-09-03 03:36:17
为什么不尝试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
}发布于 2020-12-10 17:33:47
对于一个简单的“框”,只需添加一个Forms.Panel并将您的控件放在上面。然后将面板边框设置为FixedSingle。
https://stackoverflow.com/questions/25635211
复制相似问题