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,以后使用该控件时,可以绑定颜色改变时的事件处理程序,可以获得选中的颜色。
本文介绍了一个名为ColorHatch的自定义控件,该控件包含五个面板和一个按钮,用户可以通过点击按钮来选择颜色,并将所选颜色应用于顶部面板。文章详细描述了控件的实现方式,包括如何定义属性、事件及其处理程序。
2165

被折叠的 条评论
为什么被折叠?



