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
}
}