复合控件的开发

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

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

         所谓的复合控件,就是把一些基本的控件结合起来,合成自己方便使用的控件。比如结合了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); 
       }     
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值