2012-04-03 63 views
22

我想使用winforms製作一個多頁面應用程序。我決定使用多個面板 - 每個面板代表不同的頁面,所以當我需要顯示不同的內容時,我可以在它們之間切換。Winforms - 如何在設計器中顯示/隱藏元素?

我的問題是關於在設計器視圖中堆疊面板。當我有2個全屏面板時,它們全都疊在一起,而且我看不到前面創建的那個面板。有沒有解決這個問題的方法?更改可見性不會影響設計師視圖。把它看作一個類似photoshop的選項來顯示/隱藏圖層。我正在使用Visual C#2010 Express。

由於提前, 卡米爾

+0

如果您想選擇其它'Panel',你可以從下拉菜單中選擇它。另一種解決方案是將它們縮小或將它們移動到某處並根據需要以編程方式調整它們的大小和位置,或考慮使用「TabControl」控件。 – 2012-04-03 17:57:55

回答

22

幾個選擇這裏:

  1. 使用Document Outline視圖(View --> Other Windows --> Document Outline)選擇您所關心的面板。您可以右鍵單擊它並選擇Bring to Front將其放在其他任何位置。
  2. 雖然這可能與您正在做的事無關,但您可以考慮使用TabControl,在設計時您可以使用它進行視覺處理。如果您希望用戶能夠手動更改他們正在查看的面板,這只是一個合理的解決方案。
  3. 考慮將面板移動到自定義UserControl類中並分別對它們進行處理。如果這些面板的內容和邏輯是合理獨立的,那麼無論如何你都可以這樣做,只是爲了更好地重構你的代碼。

附錄:您還可以使用一個黑客,使一個TabControl的標籤對用戶不可見。把你的窗體上的TabControl,並在運行時設置ItemSize高度1。這使得它(幾乎)用戶不可能改變自己的標籤,但仍然允許您更改設計可見標籤。

myTabControl.ItemSize = new Size(myTabControl.ItemSize.Width, 1); 

注意,我叫這個破解是有原因的:TabControl小號不意味着使用這種方式。這似乎是行得通的,但像任何時候它可能會破壞的所有黑客一樣,所以你應該只將它作爲最後的手段(如果稍後會引起頭痛,請不要責備我)。總之,我不要推薦這個黑客,我只提供它作爲一種可能性。

+0

我決定使用帶來正面/發送到備份選項,因爲這是目前最簡單的解決方案,它不涉及改變我的應用程序結構(標籤控件)。不幸的是,我找不到視圖 - >其他窗口 - >文檔大綱,所以我必須使用發送回所有面板,直到我達到我要找的。 – 2012-04-03 18:50:53

0

的一種方法,我已經在這種情況下使用的是使用文件資源管理器窗口,使我工作的前面板。

0

我不知道這樣做的正確的方式,但我做什麼,我自己在這情況下是jyst使控制非常小,以後程序運行我改變開始theire的大小和位置。

4

我用「置於頂層」或「發送到備份」下的格式>爲了管理這種場景中,但你說得對,它那種很爛能見度只有運行時(據我所知)。

乾杯

0

如果它是可以接受的你,可以考慮使用TabControl控制,並把每個Panel控制在不同的標籤。然後,您可以通過在選項卡之間切換或以編程方式刪除並向控件添加適當的選項卡來隱藏和顯示正確的頁面。

你也可以考慮使用兩個不同的窗口,不同的佈局和顯示它們之間的切換。

如果使用的是隻有少數面板比較多,可以考慮把它們中的每一個單獨的控制,然後只用應用程序的形式中的控件(即在需要時增加編程它們)。通過這種方式,您可以分別設計每個控件(因此每個Panel的內容),而不會看到其他Panel

這些建議中的每一個都會使一些UI片段更加分離,如果您獲得的每個佈局都與單獨的應用程序片段相關聯,則可能需要這些建議。使用這些建議還可以使使用deisgner進行管理變得更容易。

0

所以,你要能夠顯示/隱藏在VS設計視圖面板(不只是當實際的可執行文件正在運行)是否正確?

會像this幫助?

如果沒有,那麼也許你可以嘗試創建自定義用戶控件,而不是面板,這將允許您設置可見屬性,只要你喜歡或者你可以求助於使用WPF提供這種類型的功能。點擊here瞭解更多信息。