1.,自定以控件名称:ColorHatch
2.,界面:上方五个Pannel,下方一个按钮,单击弹出颜色框,选择的新颜色会显示在最上方的Pannel中。
3,定义两个属性,一个代表用户选择的颜色,一个代表用户选择时触发的事件。
private Color hatchColor;
a,
#region 自定义属性
[Description("设置当前颜色")]
[DefaultValue(typeof(Color),"Black")]
public Color HatchColor
{
get
{
return panel1.BackColor;
}
set
{
hatchColor = value;
panel1.BackColor = hatchColor;
}
}
#endregion
b, public delegate void ChangedColorHandler(object sender,ColorChangedEvents e);
[Description("当面板颜色改变时,触发")]
public event ChangedColorHandler ColorChanged;
//程序内部调用。
Private void ChangedColor(ColorChangedEvents e)
{
if (ColorChanged != null)
{
ColorChanged(this, e);
}
}
//定义改变颜色的事件参数
public class ColorChangedEvents : EventArgs
{
private Color myColor;
public ColorChangedEvents(Color color)
{
myColor = color;
}
public Color CurrentColor
{
get
{
return myColor;
}
}
}
c,单击按钮选择新颜色或者单击选择已有颜色
private void button1_Click(object sender, EventArgs e)
{
ColorDialog colorDialog = new ColorDialog();
colorDialog.Color = panel1.BackColor;
if (colorDialog.ShowDialog() == DialogResult.OK)
{
panel1.BackColor = colorDialog.Color;
//触发颜色改变事件
ChangedColor(new ColorChangedEvents(this.HatchColor));
}
}
private void panel5_Click(object sender, EventArgs e)
{
Panel panel = sender as Panel;
if (panel != null)
{
panel1.BackColor = panel.BackColor;
ChangedColor(new ColorChangedEvents(this.HatchColor));
}
}
4,以后使用该控件时,可以绑定颜色改变时的事件处理程序,可以获得选中的颜色。