步骤一:
打开Visual Studio 2005,点击创建项目,选择Visual C#语言在右边的模版中选择Windows 控件库,给项目取个名同时点击浏览选择一个存储位置单击确定,设置该控件的Name属性为ColorHatch,然后拖曳七个panel控件,设置它们的BackColor,例如上图的设置,接着选中这些panel设置它们的边框样式BorderStyle为Fixed 3D使其有凹凸感,以上这些是界面设计,接下来进入代码部分。
步骤二:
选中该控件右键单击查看代码,添加如下代码:
public ColorHatch()
{
InitializeComponent();
currentColor = panel1.BackColor;//panel1的背景色为当前颜色
}
private Color currentColor;
public Color CurrentColor
{
get { return currentColor; }
set
{
currentColor = panel1.BackColor = value;
}
}
//自定义事件参数类
public class ColorChangedEventArgs
{
private Color c1, c2;
public ColorChangedEventArgs(Color c1, Color c2)
{
this.c1 = c1;
this.c2 = c2;
}
public Color ColorBeforeChange
{
get { return c1; }
}
public Color ColorAfterChange
{
get { return c2; }
}
}
public delegate void ColorChangedEventHandler(object sender, ColorChangedEventArgs e);//声明委托
public event ColorChangedEventHandler ColorChanged;//声明事件
protected virtual void OnColorChanged(ColorChangedEventArgs e)//当颜色改变时的方法,将自定义事件作为参数传递,从而触发颜色改变事件发生
{
if (ColorChanged != null)//如果有对象注册
ColorChanged(this, e);//调用所有注册对象的方法
}
步骤三:
选中这7个面板,到属性窗口事件里面双击Click添加这些代码:
Panel p = (Panel)sender;//强制转化为panel,从而观察到用户点击的是哪个小面板
Color c1 = currentColor;
currentColor = panel1.BackColor = p.BackColor;//每次点击的哪个面板都将该面板的颜色赋值给panel1的背景色同时也赋值给当前颜色
ColorChangedEventArgs args = new ColorChangedEventArgs(c1, currentColor);//创建事件参数类对象
OnColorChanged(args);//调用 OnColorChanged方法
步骤四:
接着新建一个Window应用程序项目,将我们之前写好的ColorHatch控件拖放进来,拖曳一个TextBox,设置其Text属性为Hello World!,找到该文本框的TextChanged事件双击进去
步骤五:
在窗体中确保选中ColorHatch这个控件,然后在属性窗口找到ColorChanged事件双击添加代码如下;
textBox1.ForeColor = e.ColorAfterChange;//面板颜色的改变文本框的字体颜色也相应跟着改变