委托的应用(自定义控件)
来源:互联网 发布:软件系统结构图 编辑:程序博客网 时间:2024/04/28 18:12
步骤一:
打开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;//面板颜色的改变文本框的字体颜色也相应跟着改变
- 委托的应用(自定义控件)
- 委托(delegate)在自定义控件的应用
- 委托与事件的应用---翻页控件
- 用户自定义控件的应用。
- 用户自定义控件的应用
- C#自定义控件-事件-委托
- C#泛型委托实现自定义控件的事件
- 委托和事件入门(三)自定义控件事件
- delegate委托事件与用户控件的应用
- 【我的应用系列】(二)自定义控件开发
- 委托控件的使用(Delegate Control)
- 自定义的委托 事件
- ASP2.0 自定义控件SKIN的应用
- Qt自定义委托之按钮控件
- 委托与事件的简单应用(不同控件之间的控制及参数传递,C# VB)
- 委托的原理与应用(1)
- 多线程委托的应用
- c# 委托的应用
- 初学者,如何用hibernate配置SqlServer?(MyEclipse)
- 大学毕业后.....机遇在那里?挑战什么?
- 链表的相关操作查找插入删除(c++ 数据结构)
- 委托的应用(窗体间的数据传递)
- 全部推翻重新来过!
- 委托的应用(自定义控件)
- 不再逃避
- 堆栈
- 程序员的那些事
- 线段树的建立
- 感受
- 终生奋斗目标:好好学习,天天向上。
- HTML的主体结构
- 选择数据库问题,比较苦恼!