2009-10-01 69 views
3

這是一個.net winform UI問題。在.net中Winform的面板切換器自定義控件?

在很多情況下,我們要設計的UI,使得你有幾種選擇,並根據您選擇的選項,不同的細節的UI設置你。例如,想象一下用戶註冊:根據您選擇的位置,您可能會被要求填寫不同的信息。通常,當我爲這樣的目的設計表單時,我會創建一個空的面板來放置主表單。我將爲每個細節UI創建一個用戶控件。當表單加載後,我將創建用戶控件的實例(表示基於選項的詳細UI)並將它們停靠在面板上並隱藏不相關的實例。當用戶更改她的選項(可能通過下拉列表或通過一組單選按鈕)時,我會以編程方式決定需要顯示哪些用戶控件並將其隱藏。迄今爲止都很好。

但是這個解決方案有一個問題,當你在VS表單設計器中打開你的表單時,你看到的只是一個空的面板,你不知道當你的用戶控件被填充時看起來會是什麼樣子。如果另一個程序員打開你在設計師的形式,他不知道這裏發生了什麼,一個空的面板?然後他必須去你的代碼並找出用戶控件。

那麼,我們有一個行爲類似於TabControl的,使所有的用戶控件可以直觀地在設計師在設計時組織了一個用戶控件?當然,你會說,然後使用tabcontrol。但顯然,其目的與tabcontrol不同,而不是頂部的tab按鈕。您可能會問我寫幾行代碼來隱藏tabcontrol上的選項卡按鈕。是的,我們可以做到這一點,但是我發現在隱藏Tab按鈕後,Tabcontrol和其他控件外圍會有一些空間,並且外觀並不理想。在視覺上,標籤按鈕比標籤頁本身佔用額外的空間,因此隱藏它們會給你一些佈局邊界問題。

是否存在被別人,達到我的目的而開發的自定義控制?我的意思是,來吧,這是一個普遍的問題,我不相信每個人都會在表單上留下一個空白的小組。必須有一些更好的解決方案。我需要你的幫助。謝謝。

+0

+1,會很高興有這樣的控制。不幸的是,我還沒有找到一個。寫一個會有點棘手,因爲你需要使它與VS設計師正確交互... – MartinStettner 2009-10-01 01:40:32

+0

其實,如果你有隱藏tabcontrol按鈕的代碼,我很樂意看到它。 – 2009-10-02 19:51:12

回答

0

到目前爲止,我用一個TabControl和隱藏的標籤是最好的解決辦法已經找到。有一些協助here,但你說得對,這並不理想。

2

但這種方法有一個問題,當你打開VS表單設計器表單,你看到的是一個空的面板,你不知道會怎樣看時,你的用戶控件被填充等。如果另一個程序員在設計師中打開你的表單,他不知道這裏發生了什麼,一個空的面板?然後他必須去你的代碼並找出用戶控件。

我們也做同樣的東西,所有的地方。同意,如果你不斷添加你的面板到表單你會有這個問題。簡單的答案就是不要這樣做。在您的項目中創建一個從Panel派生的UserControl。然後在你的表單中添加自定義控件。現在

可以從面板自行設計表格,你可以設計在它自己的窗口中的每個面板。這個解決方案創建了更多的源文件,但以這種方式分離表單的邏輯非常值得,即使您不顯示和隱藏面板。