如何改变控件(包括自定义控件)在FORM上的叠放次序?假如两个控件有重叠,一个控件挡住了另外一个控件。想把上面的控件放到下面,从而让下面的控件显示出来,请问有什么办法?
解决方案 »
- 连接DBF文件的疑问!匪夷所思
- 请大家推荐一个grid控件,谢谢了
- 怎样可以从webbrowser里的链接,点击后把参数付给其他窗口的变量
- 100分求助!在这个示例程序中,文件下载到大概90%的时候,就会停止,请高手改正,100分相送!
- Visual Studio Service Pack6.0有啥新功能啊?
- 想了N久也做不来
- ///软件的试用期问题,万分焦急///
- 哪个有<< visal basic>>实用编程百例这本书的配套光盘里的源代码?清华大学出版社
- 自动换行问题?
- 我想打包两个工程在一起安装,在一个组里生成两个可执行文件,并且在安装的同时在桌面生成两个可执行文件的快捷方式,怎么做?能用VB自己带的打包程序完成吗?
- VB打包的问题
- 有人会使用VB操作IIS吗?
*****************************************************************************
欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码)
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
设计阶段选取快显功能表中的「移至顶层」或「移至底层」功能表指令,可以设定物件的 z- 顺序。ZOrder 用在不同的地方,有二种不同的意义:
1、用于 MDIForm 中的 Child Form 时,指的是每一个 Child Form 的上下位置关系。
2、用于每一个 Form 中的所有控制项时,指的是每一个控制项间的上下位置关系。 (注二)注一:一般我们的二度平面座标轴是指 X 座标轴 (东西向)及 Y 座标轴 (南北向),
二个轴构成一个平面,再加上垂直的 Z 座标轴,就构成了三度立体空间了!
所以 ZOrder 指的就是物件在垂直的 Z 座标轴上的上下位置关系。注二:虽然 ZOrder 指的是物件在垂直的 Z 座标轴上的上下位置关系。
但是很多人搞不清楚,为什么他已经设定了 ZOrder 了,为什么在某些控制项中是无效的? 原因是对单一 Form 或 单一 Container 而言,在垂直的 Z 座标轴上又分成三个层次:
最下一层:显示图形方法结果的绘图空间。
中间一层:用来显示图形物件(例如 Image) 和 Label 控制项。
上面一层:显示所有非图形控制项,例如 CommandButton、CheckBox 或 ListBox。
而 ZOrder 只对单一层次内的控制项有效而已! 例如:您如果设定 Label 及 Image 的 ZOrder 是有效的,因为它们都在中间一层!
您如果设定 Label 及 CommandButton 的 ZOrder 是无效的,因为它们在不同层! 最重要的是:不管 ZOrder 如何设定,
在上面一层的物件永远会在中间一层的物件的上方!
在中间一层的物件永远会在最下一层的物件的上方!
原因是对单一 Form 或 单一 Container 而言,在垂直的 Z 座标轴上又分成三个层次:
最下一层:显示图形方法结果的绘图空间。
中间一层:用来显示图形物件(例如 Image) 和 Label 控制项。
上面一层:显示所有非图形控制项,例如 CommandButton、CheckBox 或 ListBox。”
你试一下将窗体上放置一些控件,将窗体的ClipControls设置为False,然后写入下面的代码:
Private Sub Command1_Click()
Me.Line (0, 0)-(Me.ScaleWidth / 2, Me.ScaleHeight / 2), , BF
End Sub
你会看到,绘制的矩形遮挡了控件,所以这种次序是可以改变的。
另外,象Label、Image这样的控件没有hwnd,是一种轻量控件,严格的讲它不属于Windows窗口的范围,因此它没有Hwnd,这种控件是永远不可能显示在有hwnd属性的控件之上的。
yangao说的方法我想他是说你把这些Label这类控件放在Frame或PictureBox中,然后利用这些容器来达到实现Z顺序的目的吧。