基礎布局網上有的是,不再贅述,在此僅描寫一些犄角噶藍兒,不容易查到,但會遇到的問題:
1,假設共3個區域,想讓布局顯示方式為左側一個區域,右側呈上下區域。通過dockpanel.show(參數)逐一show出來,結果卻發現可能布局與自己想象的不一致。
結果布局可能為上一個區域,左右兩個區域的這種布局,
圖:
,
解決方案:改變代碼show的順序即可。圖:
2,點擊首頁按鈕,自動在document區域新增首頁。本人的能力有限,這個問題也困惑了我一陣,因為dockpanel的tab頁其實是個窗體,如果用Form1 frm1 = new Form1()的方式,的確可是實現,但是,大家也看到了,首頁這個問題到好辦,可是左側那么多欄目,點一下,就new一個新窗體,那么需要在項目中建多少個窗體才能解決問題呀。顯然,這不現實。
解決方案:很簡單,直接new即可,具體看圖:
3,以左側區域為例,點擊區域內的×號,窗體沒了,但是通常設計會在菜單欄加個顯示按鈕,以便用戶想要再看的時候,不用再重新啟動程序,那么怎么解決呢?第一步,設置isHidden而不是hide(),第二歩,將左側窗體的屬性HideOnClose設置為true(默認為false),這兩步缺一不可。圖:
4,點擊左側樹欄目,通過欄目id查詢右側datagridview
此問題需要解決的難點,主要是:(1),這不像winform的資源管理器制作,這是兩個窗體間的傳值,但由於加上了dockpanel插件,傳值的方法又和傳動的winform不太一樣;(2),dockpanel插件只有一個,區域是自己分配的,在dpLeft窗體上的treeview的click事件傳參無效,也就是只能用主窗體對象傳參,但是單擊事件需要在主窗體弄;(3,),不能通過問題2的解決方案new,否則會出現新的tab窗體,然而右側區域那兩個tab數量是固定的,不能新增窗體。
好吧,無需多言,直接上圖:
6,關閉所有document區域的文檔功能。
前面已經提到,不可能新增一個tab,就去新增一個form,這些tab全都是一個對象new出來的,即dpContent對象new出來的,那么這時如果關閉,用dpContent..IsHidden=true的話,只會關閉一個tab,並且這樣關閉后,如果再新增tab,會報異常的。
解決方案:循環documents即可,具體代碼見圖:
7,點擊‘×’關閉tab頁,報異常
解決方案:見圖和注釋
本人平時主要以web為主,這次是第一次接觸winform,外加個dockpanel插件,或許可能有一些問題winform本身就可以解決,希望我這點小玩兒鬧能對大家有所幫助,謝謝。
源碼地址:https://github.com/dockpanelsuite/dockpanelsuite的dockPanel文件夾下
dll下載及exe的demo:http://files.cnblogs.com/files/chzbgb/DockPanel_2.4_Bin.zip