关闭

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

点击打开链接 2 卡片式容器 卡片容器(TabControl)是这样一种容器:它本身包含多个容器(类似于Panel类型的面板容器),但同时只能显示其中的一个,并隐藏其余的容器。 卡片容器的用途很广泛,目前流行的浏览器都使用卡片式方式在一个浏览器内可以同时打开多个页面,例如: 图1 卡片式浏览的Firefox浏览器 卡片式容器解决了一个这样的问题:当我们需要在同一个窗体...
阅读(229) 评论(0)

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

点击打开链接 ——本节介绍了如何使用分组容器(GroupBox)以及一个分组RadioButton的实例 1 分组容器 GroupBox容器使用起来就和一个基本的Panel容器一样,它不具备布局管理功能,仅仅是一个可以容纳其它控件的容器。 GroupBox的主要特点就是:该容器具有一个外观优雅的边框,并且可以具备标题文本。所以该容器的主要作用就是:将符合某一类功...
阅读(288) 评论(0)

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

点击打开链接 6 分隔容器类 分隔容器(SplitContainer)由分隔线和两个面板容器组成,可以通过分隔线将容器所在区域分为两个部分(左右或上下),每个部分里面有一个面板容器(Panel容器类),可以放置其它控件。 通过鼠标拖动分隔线,可以改变容器两个区域的尺寸。 分隔线可以通过SplitterWidth 属性控制,例如: [c-sharp] vie...
阅读(445) 评论(0)

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

点击打开链接 5 表格布局 无论使用锚定布局还是流式布局,都无法达到复杂布局的效果,很多时候我们不得不使用绝对布局,忍受绝对布局带来的麻烦(要么容器尺寸一变化,界面就变得一团糟;要么在容器的Resize事件中写复杂的布局代码)。其实.net Framework中还具备一种很高级的布局方式——表格布局。 表格布局顾名思义,就是将容器分为n行m列的二维表,这样一个二维元组...
阅读(433) 评论(0)

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

点击打开链接 3 布局中的空白区域 在.net Framework中,每个控件和其所处的容器以及容器内控件之间,都存在一个可以调整的空白区域,这个空白区域纯粹是为了布局的美观性而存在的。 容器和容器内控件之间的空白称为容器的Padding属性,容器内控件之间的空白称为控件的Margin属性。看一下示意图:   图1 Padding和Margin示意图 很...
阅读(205) 评论(0)

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

点击打开链接 从ContainerControl类继承的子类作为容器窗体,可以容纳除Form类对象外的其余窗体对象。 在所有容器窗体内,最基本的就是顶级容器Form类以及面板容器Panel类。这两者的主要区别为:前者具有Windows标准框架(标题栏,最大化、最小化和关闭按钮,窗体边框,可调整尺寸),并且可以独立存在;后者只是一块区域,并且必须依附在某个容器窗体上,无法独立存在...
阅读(236) 评论(0)

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

点击打开链接 这一课很简单,学习几个类即可。 1 尺寸:Size类和SizeF类 Size类是一个表示尺寸的值类型类,具有两个正常属性:Width和Height,表示宽度和高度;一个静态属性:Empty,表示0尺寸常量(Width属性和Height属性均为0)。 SizeF类和Size类似,区别主要是Size类型对象的属性为整数值,SizeF类型对象的属性为单精...
阅读(312) 评论(0)

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

点击打开链接 我们首先来看一下窗体类的继承关系: 图1 窗体类继承关系图 其实微软从一开始开发Windows的时候,就采用了面向对象的方式(在C语言上模拟的面向对象),所以到后来的C++,VB,Delphi,都可以比较容易的使用一门面向对象语言来对Windows窗体这部分代码进行封装。 .net也是如此,它在内部依然调用了Win32 SDK中的API函数来生...
阅读(153) 评论(0)

线程基础(2)

点击打开链接 2、优雅的退出线程 上一节我们讲了如何建立和启动线程,那么线程应该如何退出呢? 按照要求,无论使用何种编程语言,线程都必须自然退出,而不应该被迫退出。所谓自然退出,就是线程的入口方法执行完毕退出(包括使用异常跳出方法、使用return跳出方法或令方法运行完毕),线程入口方法执行完毕,标志着线程退出,此时.net Framework会继续执行一段代码,回收...
阅读(144) 评论(0)

线程基础(1)

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

基本线程同步

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

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

点击打开链接 五、增加泛型 前面我们通过一个ArrayList类实现了IList接口,通过代码可以知道,ArrayList采用一个object[]类型的数组字段来存储对象引用。这种方式存在两个问题: Object是引用类型,所以一旦我们向ArrayList集合中存储任何值类型对象,则会发生一次“装箱”操作,.net会将值类型对象转化为引用类型对象;其后每次访问集合中的...
阅读(147) 评论(0)

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

点击打开链接 向量是一个可以动态改变长度的数组,起作用就是无需确定集合的初始长度,集合会随着存放数据的数量自行变化。 .net Framwork中提供了两种向量的规范: 集合元素类型为Object类型的IList接口,可以存放不同类型的对象引用;以泛型为基础的IList接口,只能存放一种类型的对象引用。 下图展示了IList接口及IList接口的继承层次 图1 I...
阅读(185) 评论(0)

窗体和消息处理

点击打开链接 0 概述   Windows的界面顾名思义,由“窗体”来组成,窗体的概念:屏幕上特定的一块区域,具有绘图区域和剪裁边界,并具备响应用户输入设备操作能力。 绘图区域:每一个窗体都定义了一块区域,在这块区域里,可以进行绘图,绘制的图形将显示在窗体中。随着窗体位置的移动,绘图区域也在不断移动;剪裁边界:绘图区域的四周,由剪裁边界包围,剪裁边界保证了绘图区域确定的大...
阅读(240) 评论(0)

委托

点击打开链接  Delegate,委托(或代理)是这样一种数据类型:它的变量可以引用到某一个符合要求的方法上,通过委托可以间接地调用该方法。   C#的委托类似于C语言的函数指针,区别在于C#的委托是面向对象的。   我们可以这样认为:在纯粹的面向对象语言C#中,方法也是一种特殊对象,对象的行为就是方法的行为,对象的属性是方法的返回值和参数列表。既然可以将方法认定为对象,那该...
阅读(83) 评论(0)
610条 共41页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:349268次
    • 积分:5475
    • 等级:
    • 排名:第5390名
    • 原创:67篇
    • 转载:543篇
    • 译文:0篇
    • 评论:14条
    最新评论