复合控件的开发

来源:互联网 发布:开淘宝网店赚不赚钱 编辑:程序博客网 时间:2024/05/02 01:51

 因为项目需要,前几天自己写了一个复合控件。

        复合控件的开发过程中,主要是对属性和事件的处理,理解属性、事件的定义与使用,以及委托的使用,开发控件就很容易。

         所谓的复合控件,就是把一些基本的控件结合起来,合成自己方便使用的控件。比如结合了Label和TextBox的控件就非常容易在窗体上布局(本文就是把Lable和Textbox结合起来的),而结合了特定图案和文字的控件则非常适合显示公司的logo。下面就是我做的一个实现选择题(一个标题,加上A,B,C,D),的控件。定义了两个属性,一个事件,实现选中答案,答案颜色变化

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;


namespace selectLable
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
         
        }
      // 因为我们只需要简简单单地让这个事件发生,所以不需创建我们自己的代理(delegate)函      // 数,也不需创建特殊的事件处理事据对象
       //对事件的声明
        public event EventHandler  clicktest;

        //定义个属性
        public string lableText
        {
            get
            {
                return label1.Text;
            }
            set
            {
                label1.Text = value;
            }
        }
        private string radio;

        public string lbChecked
        {

            get
            {
                return radio;
            }
            set
            {
                radio = value;
            }
        }
         //该事件的调用过程
        protected void Onclicktest(EventArgs e)
        {
            if (Tick != null)
            {
                clicktest(this, e);
            }
        }

        private void lA_Click(object sender, EventArgs e)
        {
            radio = "A";
            this.label1.ForeColor = Color.Red;
            this.lA.BackColor = Color.Red;
            this.lB.BackColor = Color.White;
            this.lC.BackColor = Color.White;
            this.lD.BackColor = Color.White;
            Onclicktest(e);
        }

        private void lB_Click(object sender, EventArgs e)
        {
            radio = "B";
            this.label1.ForeColor = Color.Red;
            this.lB.BackColor = Color.Red;
            this.lC.BackColor = Color.White;
            this.lD.BackColor = Color.White;
            this.lA.BackColor = Color.White;
            Onclicktest(e);
        }

        private void lC_Click(object sender, EventArgs e)
        {
            radio = "C";
            this.label1.ForeColor = Color.Red;
            this.lC.BackColor = Color.Red;
            this.lB.BackColor = Color.White;
            this.lD.BackColor = Color.White;
            this.lA.BackColor = Color.White;
            Onclicktest(e);
        }

        private void lD_Click(object sender, EventArgs e)
        {
            radio = "D";
            this.label1.ForeColor = Color.Red;
            this.lD.BackColor = Color.Red;
            this.lC.BackColor = Color.White;
            this.lB.BackColor = Color.White;
            this.lC.BackColor = Color.White;
            this.lA.BackColor = Color.White;
            Onclicktest(e); 
       }     
    }
}

原创粉丝点击