2011-05-18 127 views
3

我已經開發了窗體表單應用程序,並且我的客戶需要左側的TreeView,並且點擊時允許其用戶在右側的詳細屏幕上工作。最簡單的方法是創建禁用的面板,直到點擊適當的節點。然而,這個應用程序正在不斷增長,它的太多方式都是以主要形式生活的。TreeView詳細體系結構問題

我想知道是否有可能每個節點都有一個窗體打開並展開到右側的細節區域,然後在完成時關閉它。這樣我就沒有一個單一的整體形式,但我不知道如何去做。

任何人有任何洞察到如何做這樣的事情?

謝謝。

回答

1

您應該嘗試使用UserControl s。

基本上,每個UserControl是一個表格(或多或少),你可以添加到你的主窗體,就像你任何其他控件一樣。

+0

謝謝你的建議。我在開始時就考慮過用戶控件,但避開了它們,因爲它似乎必須編寫大量暴露數據,事件和方法的代碼。但是,實際的形式與其自身之外的組件之間的交互很少。所以這似乎是現在走的一個好方法。一個問題,你如何管理尺寸?你會將用戶控件放在面板中,然後將其設置爲父容器中的doc? – MikeMalter 2011-05-19 16:43:47

+0

我有一個類似的設置爲我正在處理的應用程序。我有一個splitcontainer左側樹視圖,然後在右側,我添加或刪除usercontrol。我總是停靠它來填充,並在usercontrol中設置控件的錨點appropriatley – zsalzbank 2011-05-19 17:25:21

+0

錨定你的意思是什麼?你能發佈一個片段嗎?謝謝。 – MikeMalter 2011-05-19 17:50:30

0

我會從Panel繼承每個頁面,將每個Panel派生對象的實例附加到每個TreeView節點的Tag屬性,並在選擇節點時顯示該(Dock = Fill)。

+0

感謝您的回答,但是,我需要遠離面板,因爲面板的所有代碼都以這種形式存在,我不想在一種形式中使用這麼多的代碼。許多應用程序將通過單擊TreeView中的一個元素來驅動,該元素將在右側的詳細區域中顯示一個UI。我需要將這些UI分解成不同形式的容器。 – MikeMalter 2011-05-19 16:38:30

+0

再次閱讀我的答案 - 您需要創建從Panel繼承的類,並使用表單中的類。 – Ryan 2011-05-19 17:59:35

+0

感謝您花時間回覆我的評論。 – MikeMalter 2011-05-20 04:12:28

0

我最近也遇到過類似的情況,下面是我做的。它適用於我的情況。

  1. 添加了垂直分割的拆分容器。
  2. 添加了Dock = Fill的TreeView到分離容器的左側面板。
  3. 在分離容器的右側面板的詳細信息屏幕上添加了所需的任何控件。
  4. 將數據綁定到TreeView時,可以將數據源對象分配給TreeNode的標籤,也可以在所選節點更改事件上獲取所需的詳細信息。 (保留Tag屬性中的詳細信息可以快速更新細節視圖,但它會影響...取決於數據的大小)。
  5. 根據所選樹節點的屬性更改右側面板屬性。

我不知道你要什麼有正確的詳細信息視圖,以及爲什麼需要爲每個樹節點一個單獨的面板,而不是改變右側面板控制所選擇的節點改變事件的性質。

+0

感謝您花時間回答。我真的需要找到面板的替代品,所以我不必在單一格式中包含這麼多代碼。 – MikeMalter 2011-05-19 16:39:28

0

您可以使用拆分控件並加載右側的表單,但需要將其正確排列。正如@codethis提到的那樣,usercontrol最好能夠處理它們,因爲它們的代碼是分開編寫的。只需要傳遞參數(從節點選擇)。

根據您的屏幕更改,您可能需要多個用戶控件並將它們放置在表單中。