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; /// /// 绑定项 /// /// public void SetBindingData(List 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); } } }