2013-05-01 42 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