您所在的位置: 首页>>读书频道>>设计开发>>C++>>

1.4.2 Dock属性

http://book.51cto.com  2007-11-01 14:02  Erik Brown 徐波译  机械工业出版社华章公司  我要评论(0)

1.4.2   Dock属性

当我们具有一组控件,并需要定义它们的大小改变行为时,使用Anchor属性是很合适的。但是,如果我们想尽可能地利用窗体的空间,Anchor属性就不怎么合适了。尽管我们可以把控件放在窗体的边缘,并把它锚定到各个边缘,但这并不是最优雅的解决方案。相比之下,Dock属性是专门为这个目的而设计的。

Dock属性与Anchor有一定的关联,它也用于影响窗体上控件大小的改变。在前面用绳子把小艇固定到浮动码头的比喻中,小艇本身“停靠”在岸边,因为不管水面如何涨落,它总是位于湖边。类似地,Dock属性确定了一个控件在它的容器中的位置,并把它固定到窗体的某个边缘上。

和Anchor属性一样,Dock属性也使用枚举值,也就是DockStyle枚举。注意,AnchorStyles枚举是复数形式,因为1个控件可以具有多个锚定设置,但DockStyle枚举是单数形式,因为1个控件只有具有1个停靠值。.NET表格1-4列出了这个枚举的更多细节。

我们可以看到Dock属性是如何工作的,它替换了程序中的那行pbxPhoto.Anchor代码,用一个Dock设置使那个PictureBox控件填充整个窗体。另外,我们把程序的版本号修改为1.5(此处并未显示):

pbxPhoto.Top = (this.Height - pbxPhoto.Height) / 2;
pbxPhoto.SizeMode = PictureBoxSizeMode.Zoom;
pbxPhoto.Dock = DockStyle.Fill;

// Add our new controls to the form
this.Controls.Add(btnLoad);
this.Controls.Add(pbxPhoto);

再次编译和运行这个程序。在加载了一幅图像之后,窗体应该像图1-7这样。注意,Load按钮仍然可见,因为它是首先添加到窗体中的,因此它的Z顺序高于那幅图像。

注意,如果多个控件被设置为相同的Dock值,这些控件的Z值将决定哪个控件将被停靠。Z顺序堆栈的顶部(或第1个)控件将被固定到停靠边缘上。下一个控件将停靠到第1个控件上,接下来以此类推。唯一的例外是DockStyle. Fill值。在这种情况下,控件依次叠在其他控件的顶部,Z顺序决定了哪个控件可见。


尝试一下

修改控件添加到窗体中的顺序,首先添加PictureBox控件,然后再添加Button控件,更改按钮和图片框的Z顺序。这将导致按钮被隐藏在图像框后面,不再可见。但是,这个按钮仍然存在,我们可以使用快捷键Alt + L来加载图像。
这个时候,读者可以尝试一下把这个Button控件的Dock属性更改为DockStyle.Top。它是如何影响应用程序窗口的?这些控件的Z顺序是如何影响它们在窗体中的位置的?当然,读者也可以试试其他的Dock设置。

我们在本书中大量使用了Dock和Anchor属性,因此读者将会看到使用这2个属性的更多例子。

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

回书目   上一节   下一节
上一篇: 1.4.1 Anchor属性 下一篇: 1.5 回顾
体验Visual Studio 2008的魅力
Visual Studio 2005开发基础
C#实用基础教程
专题:ASP.NET 2.0基础开发指南
.NET移动与嵌入式技术专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有