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