频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

2.2.3 工具箱窗口

作者: Erik Brown 徐波译 出处:机械工业出版社华章公司  2007-11-02 10:26    砖    好    评论   进入论坛
阅读提示:《Windows Forms 编程实战》第二章介绍Microsoft的交互性开发环境(IDE),这个环境就是Visual Studio,本文是工具箱窗口。

2.2.3   工具箱窗口

在将来的章节中,我们并不会描述向窗体添加控件以及在Windows窗体设计器中设置控件属性的具体做法。因此,读者要确保理解这里所描述的过程。回顾第1章,我们在窗体中添加了1个Button控件和1个PictureBox控件。我们在将下来的几个步骤中用Visual Studio来完成相同的任务。

现在,这2个控件已经出现在窗体上。在默认情况下,每个控件是根据它的类型来命名的。Button控件被命名为button1,PictureBox控件被命名为pictureBox1。Visual Studio用类名加一个编号为新控件命名。添加到窗体中的第2个Button控件将被命名为button2,接下来以此类推。和本章前面的Form1类一样,我们希望为这些控件提供更具描述性的名称。因此,我们将会对这些控件进行重命名。

另外,我们需要设置这2个控件的属性,与第1章所进行的设置相似。由于我们已经以图形的方式设置了控件的位置和大小,因此不再需要对诸如Left和Height这样的位置属性进行设置。在第1章中,我们还把按钮的Text属性设置为“&Load”,把图片框的BorderStyle和SizeMode属性分别设置为Fixed3D和Zoom。

Visual Studio提供了一个特殊的“属性”窗口,我们可以通过这个窗口查看和修改控件的属性和名称。我们将使用这个窗口来更新这2个控件,作为前面步骤的继续。


a. 当然,从技术上说,(Name)并不是属性。它仅仅表示在代码中为变量所分配的名称。由于它出现在属性窗口中,为了简单起见,我们也把它称为属性。

在编译和运行这个程序之前,我们首先看看Visual Studio针对我们的操作对源代码所进行的修改。现在,文件名是MainForm.Designer.cs文件,与我们所重命名的MainForm.cs类文件匹配。程序清单2-4显示了定义InitializeComponent方法的代码区域,我们可以把它与程序清单2-3中的对应代码进行比较。代码中带标号的要点值得进行另外的讨论。


① InitializeComponent方法创建了这个程序所需的类实例,并准备为每个对象进行初始化。正如我们在第1章所讨论的那样,所有的控件都是类。new关键字创建了每个控件的实际对象。所有的控件提供了布局逻辑,以便在窗体上渲染控件。SuspendLayout方法推迟这种逻辑,直到调用ResumeLayout方法。否则,控件可能会被渲染成不完整的样子。有些控件,包括PictureBox类,还提供了ISupportInitialize接口(我们将在第5章讨论接口),允许控件对多个相关属性的修改进行优化。这一般可以防止每次修改属性时重新计算复杂或开销较大的显示逻辑。

② 在Windows窗体设计器中设计的所有属性都是在一个单独的区域中设置的,每个控件都有这样的一个区域。Name属性总是被设置为控件的变量名。TabIndex属性也会被赋值,从0开始,以建立窗体上控件的顺序。其他属性也根据需要进行了赋值。

③ 每个控件的Size和Location属性也是由Windows窗体设计器定义的。这2个设置是用System.Drawing命名空间中的Point和Size这样的结构定义的。结构和类不同,它是一种值类型,因此new语句在堆栈上创建这些对象,并把它们的值复制给适当的属性。

④ 在窗体上的所有控件都被创建并初始化之后,InitializeComponent方法使用Add方法把每个控件添加到窗体本身,保存在Form.Controls属性中。正如第1章所讨论的那样,Form.Controls属性是窗体的控件集合,它允许在这个集合中添加控件或删除控件。控件的添加顺序决定了控件在窗体中的Z顺序。另外,注意在PictureBox控件结束初始化之后,Form对象的布局逻辑也被恢复。在本书以后的讨论中,我们会更详细地解释这些要点。

⑤ 在这个文件的底部,在InitializeComponent方法的区域之后,定义了表示控件的变量。我们知道,C++的类变量必须在使用之前定义。C#在这个问题上采取了整体考虑的策略,允许C#中的类变量或字段在使用之前或使用之后定义,甚至允许在一个独立的部分类文件中定义,只要它出现在这个类的某个地方。

当我们完成了对这些代码的回顾之后,就可以像以前一样编译并运行这个程序。和第1章1.2版本的MyForm应用程序一样,这个版本的应用程序显示了这些控件,但并不允许用户通过这些控件执行任何操作。我们的下一个主题是允许用户加载图像。

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
专题
体验Visual Studio 2008的魅力
Visual Studio 2005开发基础
C#实用基础教程
Informix数据库开发向导
C#技术开发指南
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
浏览器的战国时代
浏览器的战国时代
ARP攻击防范与解决方案
ARP攻击防范与解决方案
NAC安全访问控制
NAC安全访问控制
· NAC安全访问控制
· 网络布线测试仪器
· Windows Server 2008专..
· Windows远程桌面应用
· 网络故障排除宝典
· 运营商封堵ADSL共享 中..
· 解析35岁技术人的价值..
· 世纪枭雄比尔盖茨的王..
· 主流品牌防火墙配置
· ASP.NET开发教程
· 超级计算机TOP500专题
· Vista SP1对决XP SP3
· SQL Server 2008/2005..
· 程序员如何成长?
· C#技术开发指南
· 虚拟化技术还有点“虚”
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用