基于.NET自身的控件来开发自定义控件

基于.NET自身的控件来开发自定义控件

        相信大家都很喜欢使用第三方控件,因为那样可以节省很多的开发时间,使自己的开发周期缩短很多。我以前用Delphi做开发的时候,就很喜欢使用。也因此对他们产生了佩服。当转到.NET下时,突然有个想法——就是自己创建个控件来使用。下面便开始讲述在Visual C#下基于.NET自身的控件来开发:

实现功能:

利用Lable控件来实现显示日期。

实现步骤:

1、首先创建我们的环境。

在打开的Visual Studio 2005中我们选择“文件”→“新建”,便可以弹出这个“新建项目”的对话框,在对话框中我们选择Windows 控件库(修改名称、位置等),点“确定”就可以了。

2、因为我们要做的利用Label控件来实现我们的显示日期的控件。所以我们要先在先拖动一个Label到窗体上。时间是需要取系统的当前时间,所以还要继续拖动一个Timer控件到窗体中。

3、控件都已经拖动到窗体上。修改一下timer1的属性。

控件名称

控件属性

timer1

Enabled

True

 

Interval

1000(单位为:毫秒)

 

4、添加事件

在Timer1中的Tick事件中写入一下代码:

private void timer1_Tick(object sender, EventArgs e)

{

label1.Text = System.DateTime.Now.ToString();

}

下面便可以运行我们的程序,并可以在窗体上看到一直在动的时间。这时的窗体会很不对称,我们可以先停止调式,修改一下它的高和宽。

 

这便是我们的第一个简单的基于.NET控件的例子。如果您对自定义控件感兴趣,请您忘下读,不感兴趣的话,请您参阅其他的技术资料。

5、如何使用我们的控件

当我们创建了控件就是要为了以后方便的使用。下面介绍一下我们的使用。以WinFrm为例。

新建Windows应用程序。在工具箱中右击选择“选择项”,显示“选择工具箱项”对话框,

 

我们选择“浏览”按钮,然后找到我们刚刚创建的控件库下的 Dll文件。就可以实现添加到工具箱中。

 

将控件拖动到我们新建的Windows 应用程序(Form1)中。就可以体验出效果。运行使一下。

5、以上的程序实现了简单的基于.NET控件的自定义控件。下面我们将更深入的为我们的控件添加功能。

为控件添加属性。

定义:Color fcolor;//前景色

实现对它的封装字段操作,并修改set的方法。

        public Color Fcolor

        {

            get { return fcolor; }

            set {

                fcolor = value;

                label1.ForeColor = fcolor;

            }

        }

这时,我们是不能在属性中看到Fcolor的。下面我们再添加一些标记代码:

在public Color Fcolor方法前定义:

        [Category("default")]

        [Browsable(true)]

        [Description("实现对显示日期和时间")]

然后运行就可以看到了。

 

根据上面我们也可以实现背景色属性的添加。可以动手做一下。

6、为控件添加事件

实现每过10秒就提示当前的秒数。

定义委托:public delegate void MyDelegate(int );

定义事件:public event MyDelegate MyEvent;

因为我们实现每过10秒就提示,所以代码应该写在Timer1中的 Tick 中。

          if (MyEvent!=null)

            {

                if (System.DateTime.Now.Second % 10 == 0)

                {

                    MyEvent(System.DateTime.Now.Second);

                }

            }

这时我们运行是不能看到效果的。我们可以借助刚才我们创建的 Windows 应用程序。

 

在控件的事件中可以看到我们定义的MyEvent事件,在里面编写代码:

        private void ucDateTime1_MyEvent(int Second)

        {

            MessageBox.Show("当前是:" + Second + "秒");

        }

运行Windows应用程序,便可以了。

 

 

我们的自定义控件的讲解完毕,要是有更深入的话,请参阅MSDN。


 


 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Drawing;
 5using System.Data;
 6using System.Text;
 7using System.Windows.Forms;
 8
 9namespace WindowsControlLibrary1
10{
11    public delegate void MyDelegate(int Second);
12    public partial class UCDateTime : UserControl
13    {
14        public event MyDelegate MyEvent;
15        public UCDateTime()
16        {
17            InitializeComponent();
18        }

19
20        Color fcolor;
21
22        [Category("default")]
23        [Browsable(true)]
24        [Description("实现对显示日期和时间")]
25        public Color Fcolor
26        {
27            get return fcolor; }
28            set 
29                fcolor = value;
30                label1.ForeColor = fcolor;
31            }

32        }

33
34        private void timer1_Tick(object sender, EventArgs e)
35        {
36            label1.Text = System.DateTime.Now.ToString();
37            if (MyEvent!=null)
38            {
39                if (System.DateTime.Now.Second % 10 == 0)
40                {
41                    MyEvent(System.DateTime.Now.Second);
42                }

43            }

44        }

45
46        private void UCDateTime_Load(object sender, EventArgs e)
47        {
48            this.timer1_Tick(sender,e);
49        }

50    }

51}


 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Text;
 7using System.Windows.Forms;
 8
 9namespace WindowsApplication1
10{
11    public partial class Form1 : Form
12    {
13        public Form1()
14        {
15            InitializeComponent();
16        }

17
18        private void ucDateTime1_MyEvent(int Second)
19        {
20            MessageBox.Show("当前是:" + Second + "");
21        }

22    }

23}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值