2009-08-01 70 views
1

我在c#中使用了GUI表單生成器。我有一個TransparencyKey集,並且整個表單的backGround顏色設置爲該透明鍵,因此表單的背景看起來不可見。我也有一個登錄面板,首先出現,用戶登錄後它消失,其他面板變得可見。除了當我嘗試重疊任何面板時,這一切都可以工作。發回或帶到前面沒有區別。如果其中一個面板重疊一點,那麼這兩個重疊面板就會消失?什麼可能是錯的?C中的重疊面板#

乾杯 格蘭特

+2

我建議你發佈創建問題的最短可能的示例代碼,這將導致更多的迴應機會... – ShuggyCoUk 2009-08-01 22:14:13

回答

1

如果是這樣的WinForms,有一個在所有的z順序沒有概念。每個面板都會要求父窗體繪製背景。出於這個原因,WinForms透明度很少按照您的預期工作。

話雖如此,我不明白爲什麼面板會完全消失,如果有任何重疊。我過去實施過這種類型的事情,從來沒有見過這種行爲。你可以在一個非常小的示例項目中重新創建併發布代碼嗎?

+0

我明白你對z順序的意思。真的沒有必要向你展示代碼。如果您只是使用透明度鍵創建表單(並將背景顏色設置爲該透明度鍵)。如果您嘗試將任何面板放在上面,它會消失。沒有我甚至沒有打過鑰匙。我不明白。我最終做的是編寫在運行時創建面板的代碼,並根據表單當前所在的位置進行定位。出於某種原因,這可以起作用,但是用gui編輯器創建它們不會。感謝您盡力幫助。 Grant- – cozmokramer8 2009-08-14 20:51:54

5

不知道我會說什麼會適用於你在做什麼。我正在試圖在Windows窗體中使用面板做類似的事情。我有兩個面板,我想根據數據綁定控件切換其可見性。當PanelY不可見時,PanelX將可見。那麼我得到一個問題... PanelX將是可見的,PanelY將是不可見的。但是,如果我將表單輸入更改爲PanelY應該可見的位置,並且PanelX應該是不可見的,它們都是不可見的。無論我做了什麼,我都無法讓PanelY顯示出來。

那麼解決方案就是這樣。我把PanelY放在PanelX裏面(當然沒有意識到我做過)。我想要的是PanelX和PanelY都在主表單容器上。但就像我說的,PanelY在PanelX的容器中......所以當PanelX不可見時PanelY應該是可見的,PanelY也是不可見的,因爲它的容器(PanelX)是不可見的。

這麼長的故事,確保你的面板是在適當的容器。

+0

我知道這是舊的,但我想評論並說我只是做了完全相同的事情。我發現的最簡單的修復方法是將一個面板放在你希望它們全部開始的地方(假設它們全部重疊),然後將其餘部分的位置複製/粘貼到它們的屬性中(或者如果它更符合您的需要,則以編程方式進行設置) 。 – 2013-03-15 13:17:35