2008-09-26 85 views
3

我想用TabControl構造一個Form,但是我想避免每個TabPage上的每個控件都最終成爲我添加TabControl的表單的成員。到目前爲止,我已經確定了這些選項,請發表評論或提出其他建議:如何處理.NET TabPage控件都以一個Form類結束?

1)寫用戶控件每個TabPage的

2)在主窗體上只留下控制,但將控制變量公衆和cut-和過去的所有實際的代碼放到單獨的類

3)放棄窗體設計和運行時

4所做的一切)由TabPage的推導(不知道這是否和設計時的意義是什麼)

感謝所有,

安德魯

回答

3

在任何複雜的WinForms應用程序,你可能會遇到太多的控件的窗體上的問題。並不是說你會碰到一個硬性限制,而是你會遇到一個痛點 - 比如你正在描述。

在大多數情況下,對於我來說,您的選項#1 - 每個標籤頁的用戶控件 - 是最不痛苦的方法。它允許您以自己的方式封裝控件的邏輯分解,並對其進行適當的確定。

這樣做的缺點是,您最終可能會暴露在您的用戶控件上的屬性。但是,解決這個問題的方法非常簡單:使用自定義類來表示與所述控件「綁定」的數據,然後公開該類的綁定實例的單個屬性。

總體來說,你會有更好的體系結構,你會更容易維護,作爲額外的好處,你不會爲了讓表單工作而堅持下去。 :)

編輯:

我要指出,你也可能最終需要從暴露代表你的標籤頁的用戶控件的一些自定義事件。從本質上講,如果在父表單需要事件的選項卡上有一個控件,則必須創建一個事件並將其引發,以便父表單知道它。這不是非常困難,但可以將重要的LOC添加到用戶控件中。

2

選項1是最好的選擇,因爲它允許您使用設計器來佈置UserControl的內容,並且還可以讓不同的開發人員同時在不同的UserControl實例上工作。

選項2是一個壞主意,因爲如果你想改變佈局,設計者將生成一些新的代碼,你的剪貼必須手工修正。

選擇3將是使用設計器來組織布局的10倍多的工作。

選項4對UserControl沒有任何好處,但需要對TabPage類進行一些更改才能使其作爲設計界面。所以我會堅持選項1.

相關問題