tangxu
2024-04-24 1c5fa983ae3506c2edaa88c51a959d46685c1ba1
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraLayout;
using DevExpress.Utils;
 
namespace IStation.WinFrmUI
{
    public partial class LayoutPeekCtrl : XtraUserControl
    {
        public LayoutPeekCtrl()
        {
            InitializeComponent();
        }
 
        private const int _itemHeight = 50;
 
        /// <summary>
        /// 绑定项
        /// </summary>
        /// <param name="items"></param>
        public void SetBindingData(List<TilePeekItem> items)
        {
            for (int i = 0; i < items.Count; i++)
            {
                var item = items[i];
                var lab = CreateLabelControl(item);
                LayoutItem(lab);
            }
 
            var empty = new DevExpress.XtraLayout.EmptySpaceItem();
            empty.AllowHotTrack = false;
            empty.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            empty.MinSize = new Size(1, 1);
            empty.TextSize = new System.Drawing.Size(0, 0);
            this.layoutControlGroup1.AddItem(empty);
 
            this.Size = new Size(200, items.Count * _itemHeight + 2);
        }
 
        //创建LabelControl
        private LabelControl CreateLabelControl(TilePeekItem item)
        {
            var lab = new LabelControl();
            lab.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
            lab.AllowGlyphSkinning = DefaultBoolean.True;
            lab.Padding = new Padding(15, 0, 0, 0);
            lab.StyleController = this.layoutControl1;
            lab.ImageAlignToText = DevExpress.XtraEditors.ImageAlignToText.LeftCenter;
            lab.IndentBetweenImageAndText = 10;
            lab.Appearance.Image = item.NormalImage;
            lab.Text = item.Caption;
            lab.Tag = item.Tag;
            lab.Click += delegate
            {
                if (item.Click != null)
                    item.Click();
            };
            lab.Appearance.BackColor = Color.White;
            lab.Appearance.ForeColor = Color.FromArgb(63, 63, 63);
            lab.MouseHover += lab_MouseHover;
            lab.MouseLeave += lab_MouseLeave;
            return lab;
        }
 
        void lab_MouseLeave(object sender, EventArgs e)
        {
            var lab = sender as LabelControl;
            lab.Appearance.BackColor = Color.White;
            lab.Appearance.ForeColor = Color.FromArgb(63, 63, 63);
        }
 
        void lab_MouseHover(object sender, EventArgs e)
        {
            var lab = sender as LabelControl;
            lab.Appearance.BackColor = Color.FromArgb(0, 122, 204);
            lab.Appearance.ForeColor = Color.White;
        }
 
 
 
        //创建LayoutItem
        private void LayoutItem(Control ctrl)
        {
            var layoutItem = this.layoutControlGroup1.AddItem();
            layoutItem.Padding = new DevExpress.XtraLayout.Utils.Padding(0);
            layoutItem.Control = ctrl;
            layoutItem.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutItem.TextSize = new System.Drawing.Size(0, 0);
            layoutItem.TextToControlDistance = 0;
            layoutItem.TextVisible = false;
            layoutItem.MinSize = new Size(16, _itemHeight);
            layoutItem.MaxSize = new Size(0, _itemHeight);
        }
 
 
 
 
    }
}