Dances with Wolves 的专栏

Never underestimate your power to change yourself!

排序:
默认
按更新时间
按访问量

图形界面编程(六) 分组容器和卡片容器(2)

点击打开链接 2 卡片式容器 卡片容器(TabControl)是这样一种容器:它本身包含多个容器(类似于Panel类型的面板容器),但同时只能显示其中的一个,并隐藏其余的容器。 卡片容器的用途很广泛,目前流行的浏览器都使用卡片式方式在一个浏览器内可以同时打开多个页面,例如: ...

2016-10-25 15:32:39

阅读数:568

评论数:0

图形界面编程(六) 分组容器和卡片容器(1)

点击打开链接 ——本节介绍了如何使用分组容器(GroupBox)以及一个分组RadioButton的实例 1 分组容器 GroupBox容器使用起来就和一个基本的Panel容器一样,它不具备布局管理功能,仅仅是一个可以容纳其它控件的容器。 GroupBox的主要...

2016-10-25 15:31:49

阅读数:1313

评论数:0

图形界面编程(五) 布局容器类(4)

点击打开链接 6 分隔容器类 分隔容器(SplitContainer)由分隔线和两个面板容器组成,可以通过分隔线将容器所在区域分为两个部分(左右或上下),每个部分里面有一个面板容器(Panel容器类),可以放置其它控件。 通过鼠标拖动分隔线,可以改变容器两个区域的尺寸。 分...

2016-10-25 15:31:07

阅读数:746

评论数:0

图形界面编程(五) 布局容器类(3)

点击打开链接 5 表格布局 无论使用锚定布局还是流式布局,都无法达到复杂布局的效果,很多时候我们不得不使用绝对布局,忍受绝对布局带来的麻烦(要么容器尺寸一变化,界面就变得一团糟;要么在容器的Resize事件中写复杂的布局代码)。其实.net Framework中还具备一种很...

2016-10-25 15:30:08

阅读数:929

评论数:0

图形界面编程(五) 布局容器类(2)

点击打开链接 3 布局中的空白区域 在.net Framework中,每个控件和其所处的容器以及容器内控件之间,都存在一个可以调整的空白区域,这个空白区域纯粹是为了布局的美观性而存在的。 容器和容器内控件之间的空白称为容器的Padding属性,容器内控件之间的空白称为...

2016-10-25 15:28:39

阅读数:335

评论数:0

图形界面编程(五) 布局容器类(1)

点击打开链接 从ContainerControl类继承的子类作为容器窗体,可以容纳除Form类对象外的其余窗体对象。 在所有容器窗体内,最基本的就是顶级容器Form类以及面板容器Panel类。这两者的主要区别为:前者具有Windows标准框架(标题栏,最大化、最小化和关闭按钮,...

2016-10-25 15:27:35

阅读数:343

评论数:0

图形界面编程(四) 尺寸、坐标、边界

点击打开链接 这一课很简单,学习几个类即可。 1 尺寸:Size类和SizeF类 Size类是一个表示尺寸的值类型类,具有两个正常属性:Width和Height,表示宽度和高度;一个静态属性:Empty,表示0尺寸常量(Width属性和Height属性均为0)。 ...

2016-10-25 15:26:28

阅读数:614

评论数:0

图形界面编程(三) 子窗体

点击打开链接 我们首先来看一下窗体类的继承关系: 图1 窗体类继承关系图 其实微软从一开始开发Windows的时候,就采用了面向对象的方式(在C语言上模拟的面向对象),所以到后来的C++,VB,Delphi,都可以比较容易的使用一门面向对象语言来对Windows窗...

2016-10-25 15:24:46

阅读数:269

评论数:0

线程基础(2)

点击打开链接 2、优雅的退出线程 上一节我们讲了如何建立和启动线程,那么线程应该如何退出呢? 按照要求,无论使用何种编程语言,线程都必须自然退出,而不应该被迫退出。所谓自然退出,就是线程的入口方法执行完毕退出(包括使用异常跳出方法、使用return跳出方法或令方法运行...

2016-10-25 15:21:40

阅读数:203

评论数:0

线程基础(1)

点击打开链接 Windows系列操作系统是建立在保护模式之上的32位/64位多任务操作系统,其特点是:时分抢先式多任务操作系统。我们来详细探讨一下其中的定义。 在操作系统中,进程和线程是和我们运行程序紧密相关的两个概念,其中: 进程是资源分配单元,用于执行一段程序前为...

2016-10-25 15:20:40

阅读数:251

评论数:0

基本线程同步

点击打开链接  所谓同步,就是给多个线程规定一个执行的顺序(或称为时序),要求某个线程先执行完一段代码后,另一个线程才能开始执行。    第一种情况:多个线程访问同一个变量:   1. 一个线程写,其它线程读:这种情况不存在同步问题,因为只有一个线程在改变内存中的变量,内存...

2016-10-25 15:19:54

阅读数:183

评论数:0

集合框架 IList,IList——向量(2)

点击打开链接 五、增加泛型 前面我们通过一个ArrayList类实现了IList接口,通过代码可以知道,ArrayList采用一个object[]类型的数组字段来存储对象引用。这种方式存在两个问题: Object是引用类型,所以一旦我们向ArrayList集合中存储任...

2016-10-25 15:12:28

阅读数:210

评论数:0

集合框架 IList,IList——向量(1)

点击打开链接 向量是一个可以动态改变长度的数组,起作用就是无需确定集合的初始长度,集合会随着存放数据的数量自行变化。 .net Framwork中提供了两种向量的规范: 集合元素类型为Object类型的IList接口,可以存放不同类型的对象引用;以泛型为基础的IList接...

2016-10-25 15:11:19

阅读数:268

评论数:0

窗体和消息处理

点击打开链接 0 概述   Windows的界面顾名思义,由“窗体”来组成,窗体的概念:屏幕上特定的一块区域,具有绘图区域和剪裁边界,并具备响应用户输入设备操作能力。 绘图区域:每一个窗体都定义了一块区域,在这块区域里,可以进行绘图,绘制的图形将显示在窗体中。随着窗体位置...

2016-10-25 15:09:26

阅读数:535

评论数:0

委托

点击打开链接  Delegate,委托(或代理)是这样一种数据类型:它的变量可以引用到某一个符合要求的方法上,通过委托可以间接地调用该方法。   C#的委托类似于C语言的函数指针,区别在于C#的委托是面向对象的。   我们可以这样认为:在纯粹的面向对象语言C#中,方法也是一种...

2016-10-25 15:07:11

阅读数:149

评论数:0

接口

点击打开链接 学习过C++的童鞋都应该知道,在C++中允许将一个类的成员函数定义为virtual(虚拟函数),定义为虚拟的函数,例如: [cpp] view plain copy   class CTest   {   public:...

2016-10-25 15:06:24

阅读数:143

评论数:0

值类型和引用类型

点击打开链接   和C++不同,在C#中,bool,char,int,long,double等也是类,一个数字例如24,就是int类型的一个对象,例如: [csharp] view plain copy   string s = 24...

2016-10-25 15:05:31

阅读数:129

评论数:0

ICollection接口

点击打开链接 一、集合类: 1.1 ICollection接口   前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程的需要。 常见的集合有: ...

2016-10-25 15:04:32

阅读数:181

评论数:0

Object类

点击打开链接 在C#中,有一个特殊的类型Object类。这个类是C#中所有其它类的超类。   我们知道,C#只允许单继承,也即每一个类都可以有唯一的一个超类。本章我们重新定义:所有的C#类有且只有一个超类。如果一个类没有显式指定,则C#以Object类作为其超类。所以所...

2016-10-25 15:03:36

阅读数:133

评论数:0

c# 双缓冲 技术与例子(解决应用程序闪烁问题)

GDI+的双缓冲问题 一直以来的误区:.net1.1 和 .net 2.0 在处理控件双缓冲上是有区别的。 .net 1.1 中,使用:this.SetStyle(ControlStyles.DoubleBuffer, true);  .net 2.0中,使用:this.SetStyle(...

2015-07-30 09:57:21

阅读数:578

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭