委托的应用(自定义控件)

来源:互联网 发布:软件系统结构图 编辑:程序博客网 时间:2024/04/28 18:12

步骤一:

打开Visual Studio 2005,点击创建项目,选择Visual C#语言在右边的模版中选择Windows 控件库,给项目取个名同时点击浏览选择一个存储位置单击确定,设置该控件的Name属性为ColorHatch,然后拖曳七个panel控件,设置它们的BackColor,例如上图的设置,接着选中这些panel设置它们的边框样式BorderStyleFixed 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;//面板颜色的改变文本框的字体颜色也相应跟着改变

 

原创粉丝点击