Tag: His box height modifies order body override CSDN ref
Control group box The default color of the border is white, which in many cases appears less prominent. However, the default list of properties does not provide the appropriate interface. So you can only redraw events with the help of.
Many on the web said that using the OnPaint event, but I did not find it in the list of events, should be hidden too deep (need to use the Override keyword to rewrite). I have directly used the Paint event here and can achieve its effect.
Thank you: http://blog.csdn.net/haoduo123456789001/article/details/51083223
Public Partial classTestform:form { PublicTestform () {InitializeComponent (); This. groupbox1.paint + =Groupbox_paint; This. groupbox2.paint + =Groupbox_paint; } voidGroupbox_paint (Objectsender, PaintEventArgs e) {GroupBox Gbox=(GroupBox) sender; E.graphics.clear (Gbox.backcolor); E.graphics.drawstring (Gbox.text, Gbox.font, brushes.red,Ten,1); varVsize =e.graphics.measurestring (Gbox.text, Gbox.font); E.graphics.drawline (pens.red,1, Vsize.height/2,8, Vsize.height/2); E.graphics.drawline (pens.red, Vsize.width+8, Vsize.height/2, Gbox.width-2, Vsize.height/2); E.graphics.drawline (pens.red,1, Vsize.height/2,1, Gbox.height-2); E.graphics.drawline (pens.red,1, Gbox.height-2, Gbox.width-2, Gbox.height-2); E.graphics.drawline (pens.red, Gbox.width-2, Vsize.height/2, Gbox.width-2, Gbox.height-2); } Private voidTestform_load (Objectsender, EventArgs e) { } }
:
Of course, if you would like to, see the following method of using OnPaint to implement.
First, you need to create a component of your own (similar to a custom control):
Once added, switch to Code view.
Change the inheritance relationship to:
Public Partial class //Component { public mygroupbox () { InitializeComponent (); } Public Mygroupbox (IContainer container) { container. ADD (this); InitializeComponent (); }
//rewrite }
Then rewrite the OnPaint () method:
//rewrite protected Override voidOnPaint (PaintEventArgs e) {varVsize = e.graphics.measurestring ( This. Text, This. Font); E.graphics.clear ( This. BackColor); E.graphics.drawstring ( This. Text, This. Font,NewSolidBrush ( This. ForeColor),Ten,1); E.graphics.drawline (Pens.black,1, Vsize.height/2,8, Vsize.height/2); E.graphics.drawline (Pens.black, Vsize.width+8, Vsize.height/2, This. Width-2, Vsize.height/2); E.graphics.drawline (Pens.black,1, Vsize.height/2,1, This. Height-2); E.graphics.drawline (Pens.black,1, This. Height-2, This. Width-2, This. Height-2); E.graphics.drawline (Pens.black, This. Width-2, Vsize.height/2, This. Width-2, This. Height-2); }
Press F6 to generate it, then you can find it in the toolbar, and then you don't need to use the previous GroupBox. Once
You can even expose the border color to yourself by means of a control property.
Public Partial classMygroupbox:groupbox//Component { PrivateColor Mbordercolor =Color.Black;
[Browsable (true), Description ("Border Color"), Category ("Custom Grouping")] PublicColor bordercolor {Get{returnMbordercolor;} Set{Mbordercolor =value;} } PublicMygroupbox () {InitializeComponent (); } PublicMygroupbox (IContainer container) {container. ADD ( This); InitializeComponent (); } //rewrite protected Override voidOnPaint (PaintEventArgs e) {varVsize = e.graphics.measurestring ( This. Text, This. Font); E.graphics.clear ( This. BackColor); E.graphics.drawstring ( This. Text, This. Font,NewSolidBrush ( This. ForeColor),Ten,1); Pen Vpen=NewPen ( This. Mbordercolor);//use attribute color to draw border colorE.graphics.drawline (Vpen,1, Vsize.height/2,8, Vsize.height/2); E.graphics.drawline (Vpen, Vsize.width+8, Vsize.height/2, This. Width-2, Vsize.height/2); E.graphics.drawline (Vpen,1, Vsize.height/2,1, This. Height-2); E.graphics.drawline (Vpen,1, This. Height-2, This. Width-2, This. Height-2); E.graphics.drawline (Vpen, This. Width-2, Vsize.height/2, This. Width-2, This. Height-2); } }
[http://www.cnblogs.com/CUIT-DX037/]
C # Form Control GroupBox Modify border color