1 public UCTimeLine()
2 {
3 this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
4 this.SetStyle(ControlStyles.DoubleBuffer, true);
5 this.SetStyle(ControlStyles.ResizeRedraw, true);
6 this.SetStyle(ControlStyles.Selectable, true);
7 this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
8 this.SetStyle(ControlStyles.UserPaint, true);
9 InitializeComponent();
10 items = new TimeLineItem[0];
11 if (ControlHelper.IsDesignMode())
12 {
13 items = new TimeLineItem[4];
14 for (int i = 0; i < 4; i++)
15 {
16 items[i] = new TimeLineItem()
17 {
18 Title = DateTime.Now.AddMonths(-1 * (3 - i)).ToString("yyyy年MM月"),
19 Details = DateTime.Now.AddMonths(-1 * (3 - i)).ToString("yyyy年MM月") + "发生了一件大事,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,咔嚓一声打了一个炸雷,然后王二麻子他爹王咔嚓出生了。"
20 };
21 }
22 ReloadItems();
23 }
24 }
1 private void ReloadItems()
2 {
3 try
4 {
5 ControlHelper.FreezeControl(this, true);
6 this.Controls.Clear();
7 if (items != null)
8 {
9 foreach (var item in items)
10 {
11 FlowLayoutPanel panelTitle = new FlowLayoutPanel();
12 panelTitle.Dock = DockStyle.Top;
13 panelTitle.AutoScroll = false;
14 panelTitle.Padding = new System.Windows.Forms.Padding(5);
15 panelTitle.Name = "title_" + Guid.NewGuid().ToString();
16
17 Label lblTitle = new Label();
18 lblTitle.Dock = DockStyle.Top;
19 lblTitle.AutoSize = true;
20 lblTitle.Font = titleFont;
21 lblTitle.ForeColor = titleForcolor;
22 lblTitle.Text = item.Title;
23 lblTitle.SizeChanged += item_SizeChanged;
24 panelTitle.Controls.Add(lblTitle);
25 this.Controls.Add(panelTitle);
26 panelTitle.BringToFront();
27
28
29 FlowLayoutPanel panelDetails = new FlowLayoutPanel();
30 panelDetails.Dock = DockStyle.Top;
31 panelDetails.AutoScroll = false;
32 panelDetails.Padding = new System.Windows.Forms.Padding(5);
33 panelDetails.Name = "details_" + Guid.NewGuid().ToString();
34 Label lblDetails = new Label();
35 lblDetails.AutoSize = true;
36 lblDetails.Dock = DockStyle.Top;
37 lblDetails.Font = detailsFont;
38 lblDetails.ForeColor = detailsForcolor;
39 lblDetails.Text = item.Details;
40 lblDetails.SizeChanged += item_SizeChanged;
41 panelDetails.Controls.Add(lblDetails);
42 this.Controls.Add(panelDetails);
43 panelDetails.BringToFront();
44
45 }
46 }
47 }
48 finally
49 {
50 ControlHelper.FreezeControl(this, false);
51 }
52 }
1 void item_SizeChanged(object sender, EventArgs e)
2 {
3 Label lbl = (Label)sender;
4 lbl.Parent.Height = lbl.Height + 10;
5 }
1 protected override void OnPaint(PaintEventArgs e)
2 {
3 base.OnPaint(e);
4 var g = e.Graphics;
5 g.SetGDIHigh();
6 var lst = this.Controls.ToArray().Where(p => p.Name.StartsWith("title_")).ToList();
7 for (int i = 0; i < lst.Count; i++)
8 {
9 /