2013-08-19 159 views
0

我有windows窗體不透明度70%,即使用從服務器獲取數據時,作爲覆蓋使用70%。c#winform不透明度70%,但面板內不透明度100%

在我的窗體中我有一個以「Please Wait ...」文本居中的面板。此時此面板也會受到不透明度的影響,但我想覆蓋面板的面板,因此面板不透明度爲100%。

任何線索?

非常感謝

+0

請參閱:http://social.msdn.microsoft.com/Forums/windows/en-US/43124fb0-3422-42a8-93d4-e76c4410ac42/semitransparent-form-with-no-transparent-control – sara

+1

This isn' t支持到Windows 8.鑑於其受歡迎程度,您必須等待另一個十年才能依靠它。簡單的解決方法是在頂部顯示另一個表單。 –

回答

0

我不相信你可以做一個包含面板比它的容器更不透明,所以它不會像只設置不透明度一樣簡單。

兩個想法發生對我說:

  1. 讓你的「請等待......」不會是你的窗體的孩子。如果它本身是一個頂級的形式,你可以設置你想要的任何不透明度,而不用擔心它的父母。
  2. 使您的頂級表單具有100%的不透明度,並且將其所有子級更改爲擁有70%的不透明度,而不是「Please Wait ...」面板。

在這兩個,第一個聽起來不太難看 - 它只是意味着你需要一個額外的頂層表單。第二個不是真的很糟糕,但是,你只需要遍歷頂層表單的所有子節點。

+0

遵循您的建議,我創建了一個70%不透明度的frmOverlay。然後從我的主要形式中展示出來。然後,在frmOverlay.Load事件中,我創建了一個frmPleaseWait窗體的實例,這是一個100%不透明度,我也是一個frm.Show(this)。似乎它的工作正常。這兩種形式都不是最高級的,所以如果應用程序在後臺,我不想看到「請稍候」。你怎麼看? – VAAA

+0

@VAAA如果你的意思是'frmPleaseWait.Show(this)',請刪除'(this)'。否則,你會讓'frmOverlay'成爲另一個人的父母。 –