duheng
2024-07-18 7bf79c6515f27ba9be8d2b3fb4e3ceae5718e3e5
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
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace HStation.WinFrmUI
{
    public static class TilePeekItemsExtensions
    {
        /// <summary>
        /// 创建弹出面板
        /// </summary>
        /// <param name="items"></param>
        /// <param name="dele"></param>
        /// <returns></returns>
        public static Control CreatePeekCtrl(this List<TilePeekItem> items, Action<TilePeekItem> dele)
        {
            var tc = new TileControl();
            tc.SetForPeek();
 
            var group = new DevExpress.XtraEditors.TileGroup();
            tc.Groups.Add(group);
            tc.BeginUpdate();
            items.ForEach(x =>
            {
                TileItem item = new TileItem();
                item.Text = x.Caption;
                item.ImageScaleMode = TileItemImageScaleMode.Default;
                item.ImageToTextAlignment = TileControlImageToTextAlignment.Left;
                item.ImageAlignment = TileItemContentAlignment.MiddleLeft;
                item.ImageToTextIndent = 15;
                item.ImageOptions.Image = x.Image;
                item.ImageOptions.SvgImage = x.SvgImage;
                item.ImageOptions.SvgImageSize = x.SvgImageSize;
                item.ItemClick += delegate { dele(x); };
                item.Enabled = x.Enable;
                x.EnableChangedEvent += bol => item.Enabled = bol;
                item.Tag = x.Tag;
                group.Items.Add(item);
            });
            tc.EndUpdate();
            tc.Size = new Size(tc.OptionsAdaptiveLayout.ItemMinSize.Width, group.Items.Count * tc.OptionsAdaptiveLayout.ItemMinSize.Height);
            return tc;
        }
 
        /// <summary>
        /// 创建弹出面板
        /// </summary>
        /// <param name="items"></param> 
        public static Control CreatePeekCtrl(this List<TilePeekItem> items, int width, int height)
        {
            var tileCtrl = new TileControl();
            tileCtrl.SetForPeek();
            var group = new DevExpress.XtraEditors.TileGroup();
            tileCtrl.Groups.Add(group);
            tileCtrl.BeginUpdate();
            foreach (var peekItem in items)
            {
                var item = new TileItem();
                item.Text = peekItem.Caption;
                item.AppearanceItem.Normal.ForeColor = Color.Black;
                item.AppearanceItem.Disabled.ForeColor = Color.Black;
                item.AppearanceItem.Hovered.ForeColor = Color.Black;
                item.AppearanceItem.Pressed.ForeColor = Color.Black;
                item.ImageScaleMode = TileItemImageScaleMode.Default;
                item.ImageToTextAlignment = TileControlImageToTextAlignment.Left;
                item.ImageAlignment = TileItemContentAlignment.MiddleLeft;
                item.ImageToTextIndent = 15;
                item.ImageOptions.Image = peekItem.Image;
                item.ImageOptions.SvgImage = peekItem.SvgImage;
                item.ImageOptions.SvgImageSize = peekItem.SvgImageSize;
                item.ItemClick += delegate { if (peekItem.Click != null) peekItem.Click(); };
                item.Enabled = peekItem.Enable;
                peekItem.EnableChangedEvent += bol => item.Enabled = bol;
                item.Tag = peekItem.Tag;
                group.Items.Add(item);
            }
            tileCtrl.EndUpdate();
            tileCtrl.Size = new Size(tileCtrl.OptionsAdaptiveLayout.ItemMinSize.Width, group.Items.Count * tileCtrl.OptionsAdaptiveLayout.ItemMinSize.Height);
            return tileCtrl;
        }
    }
}