using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; namespace DPumpHydr.WinFrmUI.WenSkin.Controls.ListBoxControl { [ToolboxItem(false)] public class WenListBoxControlItemTemplate : WenControl { public WenListBoxControlItemTemplate() : base() { Size = new Size(100, 30); this.AddControlButton(); this.AddControlRemoveButton(); } private Color backColor = Color.Transparent; private WenButton removeButton; private WenButton button; #region 公有属性 /// /// 是否显示删除按钮,仅对非模板生效 /// [Category("Wen"), Description("是否显示删除按钮"), DefaultValue(true)] public bool RemoveButtonShow { get => removeButton != null && removeButton.Visible; set { if (removeButton != null) removeButton.Visible = value; } } /// /// 是否显示自定义按钮 /// [Category("Wen"), Description("是否显示自定义按钮"), DefaultValue(true)] public bool ButtonShow { get => button != null && button.Visible; set { if (button != null) button.Visible = value; } } /// /// 按钮图标 /// [Category("Wen"), Description("按钮图标"), DefaultValue(true)] public Image ButtonImage { get => button?.Image; set { if (button != null) button.Image = value; } } #endregion #region 委托 public event EventClass.ObjectEventHandler RemoveClick; public event EventClass.ObjectEventHandler ButtonClick; public void OnRemoveClick() { RemoveClick?.Invoke(this, new EventClass.ObjectEventArgs() { Value = this }); } public virtual void OnButtonClick() { ButtonClick?.Invoke(this, new EventClass.ObjectEventArgs() { Value = this }); } #endregion private void AddControlRemoveButton() { removeButton = new WenButton { Image = Properties.Resources.remove, ImageSize = new Size(16, 16), Dock = DockStyle.Right, Width = 30, TextImageRelation = TextImageRelation.Overlay }; removeButton.MouseEnter += (s, e) => { backColor = this.BackColor; this.BackColor = Color.FromArgb(73, 73, 75); }; removeButton.MouseLeave += (s, e) => { this.BackColor = backColor; }; removeButton.Click += (s, e) => { OnRemoveClick(); }; this.Controls.Add(removeButton); } private void AddControlButton() { button = new WenButton { Image = null, ImageSize = new Size(16, 16), Dock = DockStyle.Right, Width = 30, TextImageRelation = TextImageRelation.Overlay }; button.MouseEnter += (s, e) => { backColor = this.BackColor; this.BackColor = Color.FromArgb(73, 73, 75); }; button.MouseLeave += (s, e) => { this.BackColor = backColor; }; button.Click += (s, e) => { OnButtonClick(); }; this.Controls.Add(button); } protected override void WenOnPaint(Graphics g, Rectangle rec, PaintEventArgs e) { base.WenOnPaint(g, rec, e); g.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), rec, ControlHelper.StringConters); } #region 重写 protected override void OnMouseLeave(EventArgs e) { base.OnMouseLeave(e); this.BackColor = this.backColor; } protected override void OnMouseEnter(EventArgs e) { base.OnMouseEnter(e); this.backColor = this.BackColor; this.BackColor = Color.FromArgb(63, 63, 65); } #endregion } }