2014-09-03 132 views
0

我向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

这是因为使用笔宽度为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(虚线,点插图,开始)。

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 
} 
+0

'BorderStyle'产生黑色边框。如果你想要一个不同的颜色,你必须绘制它。 – 2014-09-03 09:11:16

+0

yup exactly @J ... :) – Shell 2014-09-03 10:34:06

相关问题