weifenluo.winformsui.docking 詳解


基礎布局網上有的是,不再贅述,在此僅描寫一些犄角噶藍兒,不容易查到,但會遇到的問題:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM