首页 > 技术文章 > c# 自定义含有标题的容器控件(标题背景为渐变色)

lzsin 2019-07-12 10:52 原文

1、控件效果图

此效果图中的标题颜色、字号及字体可以在控件属性中设置。标题背景的渐变色及布局内容的背景色也可以在属性中设置。

2、实现的代码(用户控件)

 1 public partial class UcPanel : UserControl
 2     {
 3         public UcPanel()
 4         {
 5             InitializeComponent();
 6         }
 7         #region 外观
 8 
 9         [Category("自定义-外观"), DefaultValue("标签"), Description("Caption控件部分的字样")]
10         public string CaptionText { get { return label.Text; } set { label.Text = value; } }
11 
12 
13 
14         [Category("自定义-外观"), Description("Caption控件部分的字体")]
15         public Font CaptionFont { get { return label.Font; } set { label.Font = value; } }
16 
17         private Color LabelForeColor = Color.White;
18         [Category("自定义-外观"), Description("Caption控件部分的字体颜色")]
19         public Color CaptionColor
20         {
21             get { return LabelForeColor; }
22             set
23             {
24                 LabelForeColor = value;
25                 label.ForeColor = LabelForeColor;
26         } }
27 
28         
29         private Color PanelBackColor1 = Color.Blue;
30         private Color PanelBackColor2 = Color.White;
31         [Category("自定义-外观"), Description("控件Panel部分的开始颜色")]
32         public Color PanelColorUp
33         {
34             get { return PanelBackColor1; }
35             set
36             {
37                 PanelBackColor1 = value;                
38             }
39         }
40 
41         [Category("自定义-外观"), Description("控件Panel部分的结束颜色")]
42         public Color PanelColorDw
43         {
44             get { return PanelBackColor2; }
45             set
46             {
47                 PanelBackColor2 = value;
48                 
49             }
50         }
51 
52         private Color PanelBackColor = DefaultBackColor;
53         [Category("自定义-外观"), Description("Panel2控件部分的背景颜色")]
54         public Color Panel2Color
55         {
56             get { return PanelBackColor; }
57             set
58             {
59                 PanelBackColor = value;
60                 panel2.BackColor = PanelBackColor;
61             }
62         }
63 
64         #endregion 外观
65 
66         private void panel1_Paint(object sender, PaintEventArgs e)
67         {
68             Graphics g = e.Graphics;
69             Color FColor =PanelBackColor1;
70             Color TColor = PanelBackColor2;
71             Brush b = new LinearGradientBrush(panel1.ClientRectangle, FColor, TColor, LinearGradientMode.Vertical);
72             g.FillRectangle(b, panel1.ClientRectangle);
73         }
74 
75 
76 
77     }
View Code

 

推荐阅读