是否有任何索引来控制哪个图片、文本框、框架...将在另一个之前?有没有类似 PHP 的 z-index 的属性?
我试图右键单击并向后发送,但我没有得到任何改变。
针对在 Excel 表单上将项目移动到前面或后面的这个老问题,我发现“向前移动”和“向后发送”控件不起作用。 我偶然发现,如果你删除Excel表单中的一个项目,然后取消删除它,它会将其移动到前面。
经过相当多的搜索,您的问题的答案似乎是否定的。似乎没有任何方法可以调整 Zorder 或在 VBA 中使用“置于前面”或“发送到后面”。 根据这里的答案:
使用 Z 顺序和位置在 MS Access 中组织打开的表单
这里:
我发现提到的唯一替代方案是完美地分层控件并使用
.Setfocus
将它们带到前面。 就我个人而言,在我的数据库中,我只需将控件的 .Visible
切换为 False
或 True
,以给出控件“移动”的错觉。
注意: 查看您的标签后,我发现您那里没有 Excel 或 Access 标签。 我的答案基于Access,如果您使用的是excel,请调整您的标签。
是的,您可以使用“
ZOrder
”以编程方式将用户窗体控件移动到前面或后面。
语法为:
MyUserForm.MyControl.ZOrder (zPosition)
fmTop
(或 0
)将其设置为顶部,在用户表单上的其他所有内容上可见:MyUserForm.MyControl.ZOrder (fmTop)
或 MyUserForm.MyControl.ZOrder (0)
fmBottom
(或1
)将其设置为底部,隐藏在用户窗体上的其他所有内容下方:MyUserForm.MyControl.ZOrder (fmBottom)
或MyUserForm.MyControl.ZOrder (1)
除了循环遍历相应的 UserFrom 控件并将它们放置之外,我不知道有任何方法可以在顶部和底部之间设置特定的可见性层(例如,在控件“X”上方,但在控件“Y”下方)一个叠在另一个之上,就像构建积木一样,类似于您不能将一个积木放在现有积木塔的中间。 您必须将块放在您想要的位置,然后添加其他块,一次一个,在放置块的上方或下方。
请注意,
fmTop
和 fmBottom
预设变量的功能与 vbYes
(7
) 和 vbNo
(6
) 预设变量类似,但相对于用户表单命名(表单:“fm
”) "),而不是全局 VBA 应用程序(VBA:“vb
”)。 对于 VBA 中的任何内容,您仍然可以将 fmTop
用作“0”,将 fmBottom
用作“1”,但给定索引中的“0”和“1”并不总是指该索引内的垂直放置。 只是在说'。 ;)
我不知道这是否是一个变化(考虑到这个问题几乎九年前就被问过,但目前有解决方案。