2010-04-15 63 views
2

我想創建一個C#窗體項目中的選項菜單,我很好奇,如果有一個不太醜陋的方式來做到這一點。我有一個列表框,其中包含不同類別的選項,當您選擇一個類別時,該類別的選項會顯示在右側的面板中。基本上,與Visual Studio本身的選項菜單相同。創建與重疊面板的選項菜單

顯然,不同的控件必須在這裏使用相同的房地產,因爲每個類別都有不同的選項,需要在我的表單的同一區域顯示。因此,當您選擇一個類別時,其他類別的控件必須隱藏起來。

我目前對每個類別使用不同的Panel對象(當前爲13),但設計每個面板都是頭痛的事情,因爲我需要在每次需要改變其他面板時將其他12個面板拖出。有一個更好的方法嗎?我願意接受任何建議,無論是對實現方式的徹底改變,還是隻是一個Visual Studio提示,以便與13個面板中的1個重疊。

如果一切都失敗了,我可以使用水平呈現的TabControl,但我不喜歡它的外觀。

在此先感謝。

回答

1

我能想到三種替代方法:

  1. (OK)使用不爲用戶顯示該標題的選項卡控件。
  2. (更好)爲每個選項頁面創建用戶控件,因此每個選項頁面都有不同的設計器文件。
  3. (最好呢?)根據一些描述性信息動態生成用戶界面,所以根本沒有設計器文件需要處理。
+0

我想我會用用戶控制的想法,似乎是我太盲目的想法的明顯解決方案。出於好奇心,你可以從默認的TabControl中刪除標題嗎?或者你的意思是一個自定義選項卡控件? – brydgesk 2010-04-15 17:15:36

+0

我已經完成了WinForms開發已經有相當長的一段時間了,但我認爲你可以刪除標題。 – 2010-04-15 18:09:12

1

請看UserControl這個類。您可以使用Forms Designer對其進行設計,但在選擇項目時以編程方式將其放在ListBox的右側。爲每個選項類別創建一個不同的UserControl

1

首先,您應該知道何時處於設計模式下的屬性窗口(查看 - >功能菜單)中有一個下拉菜單,允許您選擇一個控件。因此,您不需要將其他控件以合理的方式移動。

其次,我會爲每個類別選擇自己的用戶或自定義控件。這樣你就可以單獨編輯面板。然後,您可以選擇在選擇類別時顯示/隱藏該自定義控件,或者甚至動態創建該控件。

+0

該下拉列表不會將所選控件置於z順序的頂部。因此,如果我從下拉列表中選擇一個組件並將組件拖放到其上,則會將組件放在頂層組件上,而不是選定組件。 雖然我喜歡用戶控制的想法。 – brydgesk 2010-04-15 17:13:03