博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 组件开发,简介+ hello word 级别教程!
阅读量:4211 次
发布时间:2019-05-26

本文共 1895 字,大约阅读时间需要 6 分钟。

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

啰里八嗦的前言

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


首先, 先普及一下知识。

控件分为:复合控件、扩展控件、组件。

  1. 复合控件: 现有控件进行组合,形成新控件;
  2. 扩展控件:在现有控件基础上派生出一个新的控件,增加新的或修改原有功能。
  3. .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窗口中没有显示。

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

你可能感兴趣的文章
【一天一道LeetCode】#47. Permutations II
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>
【一天一道LeetCode】#59. Spiral Matrix II
查看>>
【一天一道LeetCode】#30. Substring with Concatenation of All Words
查看>>
【一天一道LeetCode】#60. Permutation Sequence.
查看>>
【一天一道LeetCode】#113. Path Sum II
查看>>
【一天一道LeetCode】#114. Flatten Binary Tree to Linked List
查看>>
【unix网络编程第三版】阅读笔记(二):套接字编程简介
查看>>
【一天一道LeetCode】#115. Distinct Subsequences
查看>>
【一天一道LeetCode】#116. Populating Next Right Pointers in Each Node
查看>>
【一天一道LeetCode】#117. Populating Next Right Pointers in Each Node II
查看>>
【一天一道LeetCode】#118. Pascal's Triangle
查看>>
同步与异步的区别
查看>>
IT行业--简历模板及就业秘籍
查看>>
JNI简介及实例
查看>>
JAVA实现文件树
查看>>
linux -8 Linux磁盘与文件系统的管理
查看>>
linux 9 -文件系统的压缩与打包 -dump
查看>>
PHP在变量前面加&是什么意思?
查看>>