2011-11-04 40 views
1

我有一個窗口窗體與主選項卡控件和多個選項卡(tabTest1,tabTest2,...,tabSettings)。我怎樣才能將設計師生成的單個文件分割成更小,更易於管理的文件?我嘗試使用partial class,但由於兩個原因,這並不理想。c#分割表格應用程序

  1. 事件處理程序和設計器代碼(無論它們在哪個選項卡上)都在同一個文件上生成。

  2. 我必須在我的變量描述中過分冗長以保持事情的直線性(從標籤頁到標籤頁)。例如,幾個「測試標籤」有一個「編碼器」變量,所以我必須做一些像testOneEncoderValue,testTwoEncoderLabel等非常討厭。

我相信有更好的方法(因此這個問題)。原諒我的恩惠。

謝謝!

回答

4

我會創建一個自定義(容器/用戶控件)類,每個「選項卡」和其中的控件。然後,將單個控件上的這些單獨控件作爲單個控件進行打包。這樣,它將控件作爲一個整體保持在一起,而不會出現縱橫交錯的情況......特別是如果您正在處理...... 100個控件?

集裝箱/用戶控制1具有其(例如)30個控制相應於TAB1

集裝箱/用戶控制2具有其(例如)18個控制相應於TAB2

集裝箱/用戶控制3具有其(示例)50個控件分別對應Tab3

然後,在標籤頁的主窗口上,將單個控件放在每個相應的頁面上。他們現在處於更易於管理的子組件中。

+0

因此,我添加了一個用戶控件到我的項目,並調整了它的大小。如何將此UC添加到設計器模式的標籤頁中?還是必須通過代碼完成? – john

+0

@Jon,一旦創建並重新編譯項目以將其視爲控件,在進行設計工作時,應在「工具箱」中顯示該項目。然後,您應該可以將它拖到您的窗體上,就像它是任何其他窗口控件一樣。你正在運行什麼版本的VS。 – DRapp

+0

非常棒,謝謝DRapp!我引用了其他幾個.dll,我發現它隱藏在他們的控制之中。再次感謝! – john

4

最好的辦法是嘗試將每個選項卡的功能作爲單獨的實體進行隔離,併爲您擁有的每個選項卡創建UserControl。如果標籤本身太大,您的UserControl可以進一步分割爲更多的子控件以獲得更精細的粒度。您的用戶控件不需要彼此隔離,它們可以公開數據,方法或事件,以便它們可以在主窗體上組合在一起。

如果你想讓所有的東西都保持在同一個表格上,那麼不幸的是你不能兩種方法。你要麼必須:

  1. 請同designer.cs文件一切,如果你想使用VS設計師編輯您的形式
  2. 手動編寫UI代碼,並將其設爲您希望