比如说,我有一个 Image 控件(它似乎是一个无窗口控件),我想确保它位于 TextBox 之上。无论我做什么,图像控件都不会出现在文本框的顶部。
有办法吗?
PS 我知道我可以使用 PictureBox,但它不支持透明度,因此我必须拥有 Image 控件。
比如说,我有一个 Image 控件(它似乎是一个无窗口控件),我想确保它位于 TextBox 之上。无论我做什么,图像控件都不会出现在文本框的顶部。
有办法吗?
PS 我知道我可以使用 PictureBox,但它不支持透明度,因此我必须拥有 Image 控件。
无法将图像控件放置在普通文本框上,因为它们被绘制到表单本身上,因此将始终位于任何其他窗口组件下方。
如果您有 VB6 安装媒体,则有绘制(无窗口)版本的控件,包括您可以使用的 TextBox,它将(可能)执行您想要的操作;http://support.microsoft.com/kb/184687
某种类型的自定义用户控件,如果可能更好的话..您想要覆盖文本框的到底是什么?
图像控件被认为是图形控件,就像形状一样,所以它总是不如文本控件。如果你真的想要一个透明的图像,你可以使用 Microsoft 2.0 Form 代替(只有你有它)。图像可以位于文本框的顶部,您可以通过将 Backstyle 设置为 Transparent(0) 使其透明。
我创建了一个透明的覆盖控件来在 VB6 应用程序之上添加一种注释层。我会尝试从记忆中描述它,如果这不能提供足够的信息,那么您可以回帖,我会尝试挖掘代码。
首先,向您的应用程序添加一个新的 USerControl。给它起一个像 ImageEx、PictureEx 或 TransparntImage 这样的名称。您将需要使用几个属性。确保控件是窗口化的,因此它可以位于其他窗口化控件之上。找到 MaskColor 属性并将其设置为青色(或您选择用于指示透明区域的任何颜色。可能有一个附加属性启用掩蔽行为,只需浏览属性即可。将控件背景颜色设置为 MaskColor 的背景颜色。此时您有一个不可见的控件。在我的控件中,我在表面上绘制了注释,但是您可以使用 PaintPicture 或者甚至设置图像属性以实现非常简单的方法。
当然,要使其成为可重复使用的控件,您需要在自己的属性中编写代码,以允许设置 MaskColor 和图像等,以便您可以将其中一个拖放到您想要的任何表单上。
一些链接:
与我的其他答案完全不同的方法(因此是单独的答案),但您可以将 Form 上的 AutRedraw 和 ClipControls 设置为 false,它将允许 Image 控件与窗口控件在同一层上呈现。在某些情况下,您可以进行一些 flakey 重绘,但为了快速解决方案,您可以尝试一下。
1)删除所有文本框,标签和......(但记住它们的名称和位置在表格中)
2)转到(项目>组件)并标记(Microsoft Forms 2.0 Object Library),然后单击确定
3)现在您可以在工具箱中的默认控件下看到新控件...
4)使用其文本框和标签控件而不是默认控件
5)右键单击您的图像控件,然后单击(带到前面)