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 公有属性
|
|
/// <summary>
|
/// 是否显示删除按钮,仅对非模板生效
|
/// </summary>
|
[Category("Wen"), Description("是否显示删除按钮"), DefaultValue(true)]
|
public bool RemoveButtonShow
|
{
|
get => removeButton != null && removeButton.Visible;
|
set { if (removeButton != null) removeButton.Visible = value; }
|
}
|
/// <summary>
|
/// 是否显示自定义按钮
|
/// </summary>
|
[Category("Wen"), Description("是否显示自定义按钮"), DefaultValue(true)]
|
public bool ButtonShow
|
{
|
get => button != null && button.Visible;
|
set { if (button != null) button.Visible = value; }
|
}
|
/// <summary>
|
/// 按钮图标
|
/// </summary>
|
[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
|
}
|
}
|