频道栏目
首页 > 程序开发 > 软件开发 > C# > 正文
C# 组件开发,简介+ hello word 级别教程!
2017-08-03 14:27:18         来源:tianjing0805的博客  
收藏   我要投稿

我对C# 的理解仅限于使用层面, 想看深入式的不在这里。

啰里八嗦的前言

当年,在老师要求我做一个组件的时候我在网上查了很久资料,蹦出来的不外乎是某某培训之类,进去连免费课程都不给看一节。但是黄天不负苦心人系列,终于找到一些珍贵资料,也让我对 C#组件有了一点零星的认识。接下来让我分享一下这点知识。


首先, 先普及一下知识。
控件分为:复合控件、扩展控件、组件。

复合控件: 现有控件进行组合,形成新控件; 扩展控件:在现有控件基础上派生出一个新的控件,增加新的或修改原有功能。 .NET组件:就像是Timer 控件一样,在开发界面上没有实体的控件;

仔细观察可以发现,编写用户控件建立的“windows窗体控件库”程序中,设计控件默认继承了UserControl类。

其实,只要写的类库是UserControl或者Component,就可以在Toolbox里面显示,被拖拽使用。区别在于UserControl是有界面的类库,Component是没有界面的,显示在设计界面下方(例如:Timer 控件显示位置)。


这段不想看的可以不看:

从类继承方向解释,.NET中的组件、控件和用户控件。
其实从字面上已经可以理解各自的不同了。但是具体关系其实是从类的继承上来区别的。一般控件派生于:Control类,所以从此类派生出的称之为控件。一般组件派生于:Component类,所以从此类派生出的称之为组件。

用户控件派生于:UserControl类,所以从该类派生出的称之为用户控件。(我们之所以这么叫其实是因为英文翻译上的习惯)他们之间的关系主要是:UserControl继承Control继承Component。
但是具体在用时有什么区别呢?这主要是从设计的角度去考虑的。
组件类和一般类的区别:我们总是习惯于面向对象的设计方式。而对象则是由类实例化而来。我们强调万事万物皆对象,把对象看作设计的基本单元。
所谓组件其实是面向组件的设计方式,我们把组件作为设计的基本单元。组件即为程序的组成部分。其实是构成程序的一个最基本的单元。一个组件其实可以包括多个类。这与传统的面向对象的设计方式有点区别。算是更高一层的封装。
而控件和用户控件其实是组件按照具体的用途的一种划分,它们都是组件。控件的突出特点就是交互式组件。而用户控件则是将某些特定的组件或控件复合从而实现特定的业务功能。所以用户控件往往是从业务角度来设计的。


一个简单的Component

第一步:新建一个“类库”工程,名称为Components;
第二步:更改Class1.cs 代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;

namespace Components
{
    public class Component1 : Component
    {
        private int _id;
        private string _name;
        private DateTime _createDateTime;

        // 在Property窗口中为灰色显示。
        public int Id
        {
            get { return _id; }
        }

        // 在Property窗口中可以设置值。 
        public string name
        {
            get { return _name; }
            set { _name = value; }
        }
        //在Property窗口中不可见
        public DateTime CreateDateTime
        {
            set { _createDateTime = value; }
        }
    }
}

第三步:编译,或者点击“生成”。生成的组件是以.dll文件的形式存在的。
第四步:新建一个Winform窗体应用程序,把扩展控件显示在工具箱中。
第五步:将控件放置界面上,右键,查看属性,效果如下:

这里写图片描述

请注意 Id是灰色,不能对其进行设置,而CreateDateTime在Property窗口中没有显示。

这个简单的组件就完成了,简单吧~~~

点击复制链接 与好友分享!回本站首页
上一篇:C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?
下一篇:1.7 C# 属性以及参数传递
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站