2013-05-01 74 views
3

所以我有这个问题,我在c#.NET中创建控件,我可以在VB6中使用它。但是,由于您无法在vb6的.net容器中放置无边界控件,因此我尝试制作一个特殊的.NET标签并将其暴露给vb6。在VB6中使.NET控件透明

我可以在我的表单上得到这个标签,但我不能让它透明。

我尝试过使用UserControl_AmbientChanged,但Ambient.BackColor似乎总是窗体的颜色,而不是实际的父级颜色(比如一个框架)。当我使用UserControl.Parent,然后使用Parent的BackColor时也是如此。与Extender.Parent相同。即使这样做,在背景是图像的情况下也不会很好。

我试过使用SetWindowLong但这只是使整个标签不可见/透明,不考虑标题。

我试过使用这里发现的bliting技术:http://www.vbforums.com/showthread.php?438895-transparent-text-box-or-label-with-scrollbars&highlight=transparent%20TextBox但是这不起作用,因为我的控件不是PictureBoxes。

我没有选择,有没有人做过这个?怎么样?任何帮助都将非常感激。

+1

你真的在2013年创建一个用Visual Basic 6编写的应用程序吗?我从来没有听说过将C#控件放入VB6应用程序中。 – 2013-05-01 15:42:41

+1

为什么你还没有简单地将vb6应用程序移植到vb.net,是否有一些令人难以置信的好理由? – 2013-05-01 15:48:06

+3

@Rhhound,我在一家大型财富500强公司工作,在这些环境中运行大型生产型企业VB6应用程序并不罕见。事实上,我们有一家每天为2万多用户提供服务和数百万笔交易。但是,您慢慢开始整合更可持续的技术。 – 2013-05-01 15:48:10

回答

0

如果我正确理解您的情况,您将需要将.NET用户控件背景颜色设置为不同的颜色(例如,使用特定HEX颜色代码的粉红色)。然后在您的VB6应用程序中,您将设置相同的颜色代码(粉红色)为属性表中的透明颜色。

我已经在这种方式处理VB6用户控件的透明度多年,它似乎工作正常。

至于2013年关于企业级应用程序VB6的意见,那么这些人显然还没有长期在软件行业工作:) VB6已经在数百万个当前仍在使用的企业应用程序中实现。我会问发布此类评论的用户的一个问题,您如何以任何其他语言提供VB6 ActiveX控件的强大功能?答案 - >你不能。

+0

我不敢相信**数百万个企业应用程序今天仍在使用**;数以千计的企业应用程序可能每天都有数百万用户在服务。 – 2013-05-03 05:10:20

+0

我不确定我是否理解你在说什么... VB6中的.NET控件只具有我通过.NET代码中的接口公开的属性。因为我暴露了原始.net控件的背景色属性,所以我可以很容易地在vb6中更改背景色,但默认情况下没有“遮罩颜色”属性或“使此颜色透明”属性。我应该添加什么.NET界面/ vb6代码? – Felix 2013-05-03 12:16:24

+0

http://msdn.microsoft.com/en-us/magazine/jj133828.aspx – 2013-05-03 20:20:14