3

比如说,我有一个 Image 控件(它似乎是一个无窗口控件),我想确保它位于 TextBox 之上。无论我做什么,图像控件都不会出现在文本框的顶部。

有办法吗?

PS 我知道我可以使用 PictureBox,但它不支持透明度,因此我必须拥有 Image 控件。

4

5 回答 5

3

无法将图像控件放置在普通文本框上,因为它们被绘制到表单本身上,因此将始终位于任何其他窗口组件下方。

如果您有 VB6 安装媒体,则有绘制(无窗口)版本的控件,包括您可以使用的 TextBox,它将(可能)执行您想要的操作;http://support.microsoft.com/kb/184687

某种类型的自定义用户控件,如果可能更好的话..您想要覆盖文本框的到底是什么?

于 2012-06-21T12:22:49.603 回答
2

图像控件被认为是图形控件,就像形状一样,所以它总是不如文本控件。如果你真的想要一个透明的图像,你可以使用 Microsoft 2.0 Form 代替(只有你有它)。图像可以位于文本框的顶部,您可以通过将 Backstyle 设置为 Transparent(0) 使其透明。

于 2012-06-21T02:37:54.800 回答
1

我创建了一个透明的覆盖控件来在 VB6 应用程序之上添加一种注释层。我会尝试从记忆中描述它,如果这不能提供足够的信息,那么您可以回帖,我会尝试挖掘代码。

首先,向您的应用程序添加一个新的 USerControl。给它起一个像 ImageEx、PictureEx 或 TransparntImage 这样的名称。您将需要使用几个属性。确保控件是窗口化的,因此它可以位于其他窗口化控件之上。找到 MaskColor 属性并将其设置为青色(或您选择用于指示透明区域的任何颜色。可能有一个附加属性启用掩蔽行为,只需浏览属性即可。将控件背景颜色设置为 MaskColor 的背景颜色。此时您有一个不可见的控件。在我的控件中,我在表面上绘制了注释,但是您可以使用 PaintPicture 或者甚至设置图像属性以实现非常简单的方法。

当然,要使其成为可重复使用的控件,您需要在自己的属性中编写代码,以允许设置 MaskColor 和图像等,以便您可以将其中一个拖放到您想要的任何表单上。


一些链接:

MaskColor 属性

MackPicture 属性

于 2012-06-21T12:19:47.377 回答
1

与我的其他答案完全不同的方法(因此是单独的答案),但您可以将 Form 上的 AutRedraw 和 ClipControls 设置为 false,它将允许 Image 控件与窗口控件在同一层上呈现。在某些情况下,您可以进行一些 flakey 重绘,但为了快速解决方案,您可以尝试一下。

http://msdn.microsoft.com/en-us/library/aa733621(v=vs.60 )

于 2012-06-21T13:22:59.717 回答
0

1)删除所有文本框,标签和......(但记住它们的名称和位置在表格中)

2)转到(项目>组件)并标记(Microsoft Forms 2.0 Object Library),然后单击确定

3)现在您可以在工具箱中的默认控件下看到新控件...

4)使用其文本框和标签控件而不是默认控件

5)右键单击您的图像控件,然后单击(带到前面)

于 2014-11-04T09:41:02.153 回答