winform设置button的边框颜色,或取消边框颜色,不显示边框

winform设置边框颜色不像webform那么简单,可以通过设置FlatAppearance,也可以通过重绘实现。

一、设置按钮本身属性

1
2
3
buttonBubufx.FlatStyle = FlatStyle.Flat;
buttonBubufx.BackColor = Color.SkyBlue;
buttonBubufx.FlatAppearance.BorderColor = buttonBubufx.BackColor;

  

 

二、重绘,设置按钮的Region

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private static int WM_NCPAINT = 0x0085;
       private static int WM_ERASEBKGND = 0x0014;
       private static int WM_PAINT = 0x000F;
 
       [DllImport("user32.dll")]
       static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgnclip, uint fdwOptions);
 
       [DllImport("user32.dll")]
       static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);
 
       protected override void WndProc(ref Message m)
       {
           base.WndProc(ref m);
           if (m.Msg == WM_NCPAINT || m.Msg == WM_ERASEBKGND || m.Msg == WM_PAINT)
           {
               IntPtr hdc = GetDCEx(m.HWnd, (IntPtr)1, 1 | 0x0020);
 
               if (hdc != IntPtr.Zero)
               {
                   Graphics graphics = Graphics.FromHdc(hdc);
                   Color borderColor = Color.HotPink;
 
                   Rectangle rectangle = new Rectangle(textBox1.Location.X, textBox1.Location.Y + (25), textBox1.Width, textBox1.Height);
                   ControlPaint.DrawBorder(graphics, rectangle, borderColor, ButtonBorderStyle.Solid);
                   m.Result = (IntPtr)1;
                   ReleaseDC(m.HWnd, hdc);
 
               }
           }
       }

  

原帖地址:winform设置button的边框颜色,或取消边框颜色,不显示边框。

bubufx提供,禁止转载。

winform设置button的边框颜色,或取消边框颜色,不显示边框

上一篇:五款好玩又好用的Linux网络测试和监控工具


下一篇:google的多次点击实现