2014-09-03 66 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

相關問題