C# 一些核心的东东
雪天飞山狐狸
吃饱穿暖活下来
展开
-
Object类
点击打开链接在C#中,有一个特殊的类型Object类。这个类是C#中所有其它类的超类。 我们知道,C#只允许单继承,也即每一个类都可以有唯一的一个超类。本章我们重新定义:所有的C#类有且只有一个超类。如果一个类没有显式指定,则C#以Object类作为其超类。所以所有的类都会直接或者间接的继承Object类。 定义Object类的作用: 1、向所转载 2016-10-25 15:03:36 · 572 阅读 · 0 评论 -
图形界面编程(六) 分组容器和卡片容器(1)
点击打开链接——本节介绍了如何使用分组容器(GroupBox)以及一个分组RadioButton的实例1 分组容器GroupBox容器使用起来就和一个基本的Panel容器一样,它不具备布局管理功能,仅仅是一个可以容纳其它控件的容器。GroupBox的主要特点就是:该容器具有一个外观优雅的边框,并且可以具备标题文本。所以该容器的主要作用就是:将符合某一类功转载 2016-10-25 15:31:49 · 2153 阅读 · 0 评论 -
图形界面编程(五) 布局容器类(4)
点击打开链接6 分隔容器类分隔容器(SplitContainer)由分隔线和两个面板容器组成,可以通过分隔线将容器所在区域分为两个部分(左右或上下),每个部分里面有一个面板容器(Panel容器类),可以放置其它控件。通过鼠标拖动分隔线,可以改变容器两个区域的尺寸。分隔线可以通过SplitterWidth 属性控制,例如:[c-sharp] vie转载 2016-10-25 15:31:07 · 1660 阅读 · 0 评论 -
图形界面编程(五) 布局容器类(3)
点击打开链接5 表格布局无论使用锚定布局还是流式布局,都无法达到复杂布局的效果,很多时候我们不得不使用绝对布局,忍受绝对布局带来的麻烦(要么容器尺寸一变化,界面就变得一团糟;要么在容器的Resize事件中写复杂的布局代码)。其实.net Framework中还具备一种很高级的布局方式——表格布局。表格布局顾名思义,就是将容器分为n行m列的二维表,这样一个二维元组转载 2016-10-25 15:30:08 · 1480 阅读 · 0 评论 -
图形界面编程(五) 布局容器类(2)
点击打开链接3 布局中的空白区域在.net Framework中,每个控件和其所处的容器以及容器内控件之间,都存在一个可以调整的空白区域,这个空白区域纯粹是为了布局的美观性而存在的。容器和容器内控件之间的空白称为容器的Padding属性,容器内控件之间的空白称为控件的Margin属性。看一下示意图: 图1 Padding和Margin示意图很转载 2016-10-25 15:28:39 · 652 阅读 · 0 评论 -
图形界面编程(五) 布局容器类(1)
点击打开链接从ContainerControl类继承的子类作为容器窗体,可以容纳除Form类对象外的其余窗体对象。在所有容器窗体内,最基本的就是顶级容器Form类以及面板容器Panel类。这两者的主要区别为:前者具有Windows标准框架(标题栏,最大化、最小化和关闭按钮,窗体边框,可调整尺寸),并且可以独立存在;后者只是一块区域,并且必须依附在某个容器窗体上,无法独立存在转载 2016-10-25 15:27:35 · 709 阅读 · 0 评论 -
图形界面编程(四) 尺寸、坐标、边界
点击打开链接这一课很简单,学习几个类即可。1 尺寸:Size类和SizeF类Size类是一个表示尺寸的值类型类,具有两个正常属性:Width和Height,表示宽度和高度;一个静态属性:Empty,表示0尺寸常量(Width属性和Height属性均为0)。SizeF类和Size类似,区别主要是Size类型对象的属性为整数值,SizeF类型对象的属性为单精转载 2016-10-25 15:26:28 · 1595 阅读 · 0 评论 -
图形界面编程(三) 子窗体
点击打开链接我们首先来看一下窗体类的继承关系:图1 窗体类继承关系图其实微软从一开始开发Windows的时候,就采用了面向对象的方式(在C语言上模拟的面向对象),所以到后来的C++,VB,Delphi,都可以比较容易的使用一门面向对象语言来对Windows窗体这部分代码进行封装。.net也是如此,它在内部依然调用了Win32 SDK中的API函数来生转载 2016-10-25 15:24:46 · 651 阅读 · 0 评论 -
线程基础(2)
点击打开链接2、优雅的退出线程上一节我们讲了如何建立和启动线程,那么线程应该如何退出呢?按照要求,无论使用何种编程语言,线程都必须自然退出,而不应该被迫退出。所谓自然退出,就是线程的入口方法执行完毕退出(包括使用异常跳出方法、使用return跳出方法或令方法运行完毕),线程入口方法执行完毕,标志着线程退出,此时.net Framework会继续执行一段代码,回收转载 2016-10-25 15:21:40 · 410 阅读 · 0 评论 -
线程基础(1)
点击打开链接Windows系列操作系统是建立在保护模式之上的32位/64位多任务操作系统,其特点是:时分抢先式多任务操作系统。我们来详细探讨一下其中的定义。在操作系统中,进程和线程是和我们运行程序紧密相关的两个概念,其中:进程是资源分配单元,用于执行一段程序前为其分配足够的资源;线程是程序执行单元,线程用于执行程序。简单的叙述一下Windows操作系统是转载 2016-10-25 15:20:40 · 465 阅读 · 0 评论 -
基本线程同步
点击打开链接 所谓同步,就是给多个线程规定一个执行的顺序(或称为时序),要求某个线程先执行完一段代码后,另一个线程才能开始执行。 第一种情况:多个线程访问同一个变量: 1. 一个线程写,其它线程读:这种情况不存在同步问题,因为只有一个线程在改变内存中的变量,内存中的变量在任意时刻都有一个确定的值; 2. 一个线程读,其它线程写:这种情况会存在同步问题,主要转载 2016-10-25 15:19:54 · 414 阅读 · 0 评论 -
集合框架 IList,IList——向量(2)
点击打开链接五、增加泛型前面我们通过一个ArrayList类实现了IList接口,通过代码可以知道,ArrayList采用一个object[]类型的数组字段来存储对象引用。这种方式存在两个问题:Object是引用类型,所以一旦我们向ArrayList集合中存储任何值类型对象,则会发生一次“装箱”操作,.net会将值类型对象转化为引用类型对象;其后每次访问集合中的转载 2016-10-25 15:12:28 · 435 阅读 · 0 评论 -
集合框架 IList,IList——向量(1)
点击打开链接向量是一个可以动态改变长度的数组,起作用就是无需确定集合的初始长度,集合会随着存放数据的数量自行变化。.net Framwork中提供了两种向量的规范:集合元素类型为Object类型的IList接口,可以存放不同类型的对象引用;以泛型为基础的IList接口,只能存放一种类型的对象引用。下图展示了IList接口及IList接口的继承层次图1 I转载 2016-10-25 15:11:19 · 736 阅读 · 0 评论 -
窗体和消息处理
点击打开链接0 概述 Windows的界面顾名思义,由“窗体”来组成,窗体的概念:屏幕上特定的一块区域,具有绘图区域和剪裁边界,并具备响应用户输入设备操作能力。绘图区域:每一个窗体都定义了一块区域,在这块区域里,可以进行绘图,绘制的图形将显示在窗体中。随着窗体位置的移动,绘图区域也在不断移动;剪裁边界:绘图区域的四周,由剪裁边界包围,剪裁边界保证了绘图区域确定的大转载 2016-10-25 15:09:26 · 1043 阅读 · 0 评论 -
委托
点击打开链接 Delegate,委托(或代理)是这样一种数据类型:它的变量可以引用到某一个符合要求的方法上,通过委托可以间接地调用该方法。 C#的委托类似于C语言的函数指针,区别在于C#的委托是面向对象的。 我们可以这样认为:在纯粹的面向对象语言C#中,方法也是一种特殊对象,对象的行为就是方法的行为,对象的属性是方法的返回值和参数列表。既然可以将方法认定为对象,那该转载 2016-10-25 15:07:11 · 378 阅读 · 0 评论 -
接口
点击打开链接学习过C++的童鞋都应该知道,在C++中允许将一个类的成员函数定义为virtual(虚拟函数),定义为虚拟的函数,例如:[cpp] view plain copy class CTest { public: virtual void TestA(); virtual void T转载 2016-10-25 15:06:24 · 352 阅读 · 0 评论 -
值类型和引用类型
点击打开链接 和C++不同,在C#中,bool,char,int,long,double等也是类,一个数字例如24,就是int类型的一个对象,例如:[csharp] view plain copy string s = 24.ToString(); 我们调用了24的ToString方法,从这种我们熟悉的语法转载 2016-10-25 15:05:31 · 429 阅读 · 0 评论 -
ICollection接口
点击打开链接一、集合类:1.1 ICollection接口 前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程的需要。常见的集合有:向量;链表;双端队列;栈;树;Hash表;Hash映射。 所有的这些集合类型,在.net F转载 2016-10-25 15:04:32 · 583 阅读 · 0 评论 -
图形界面编程(六) 分组容器和卡片容器(2)
点击打开链接2 卡片式容器卡片容器(TabControl)是这样一种容器:它本身包含多个容器(类似于Panel类型的面板容器),但同时只能显示其中的一个,并隐藏其余的容器。卡片容器的用途很广泛,目前流行的浏览器都使用卡片式方式在一个浏览器内可以同时打开多个页面,例如:图1 卡片式浏览的Firefox浏览器卡片式容器解决了一个这样的问题:当我们需要在同一个窗体转载 2016-10-25 15:32:39 · 1328 阅读 · 0 评论