Dockpanel 使用技巧

2021-06-03 12:01:43 字數 2315 閱讀 4198

dockpanel的基本使用 我就不說了,網上很多,我想說的是在使用dockpanel時 需要注意的幾個小問題

第乙個:

使用過dockpanel的人,都有可能會遇到這樣乙個錯誤:

invalid content: activecontent must be one of the visible contents, or null if there is no visible content.

翻譯過來的意思大致是:無效的內容: 如果沒有乙個可見的內容,activecontent必須是可見的內容或空。

具體是什麼原因,大家可以相互**下。下面我說說出現這個問題的幾種情況

**中的this關鍵字代表的就是dockpanel所在的窗體為form1

1)、當dockpanel的documentstyle不為dockingmdi時,以下**會出現這個問題      

frm_a frma = null;

//判斷子窗體中是否已經存在在dockpanel中

foreach (dockcontent frm in this.dockpanel1.contents)

} frma = new frm_a();

frma.mdiparent = this;

frma.show(this.dockpanel1);

解決方案:看你設定dockpanel的documnetstyle是否為dockingmdi。大家也可以試試其他幾種方式(dockingwindow,dockingsdi,systemmdi)

2)、設定了dockpanel的documentstyle不為dockingmdi時,如果你想要設定窗體frm_b為左邊浮動窗體,需要設定窗體frm_b的dockareas為且僅為dockleft,如果想要實現其他功能可自行去設定其他屬性資訊,現在請看下面**

frm_b frmb = null;

//判斷子窗體中是否已經存在在dockpanel中

foreach (dockcontent frm in this.dockpanel1.contents)

} frmb = new frm_b();

= this;

frmb.show(this.dockpanel1,dockstate.dockleft);

注意,如果你在你的**中加了紅色注釋的**,那麼程式執行時 也會報上面的那個錯

解決方案:注釋紅色的**。

原因:(個人理解)frmb.show(this.dockpanel1,dockstate.dockleft);這句**其實就設定了frmb只停靠在dockpanel左邊,此時的frmb是不屬於mdi子窗體的,所以一旦你加入紅色的**,程式就會報錯。

第二個:

拖動、停靠、固定子窗體(顯示在dockpanel中)

拖動:如果你想使你的子窗體可以任意拖動,那麼你在設定子窗體的dockareas屬性時,保持預設值,不要修改。

固定:只需設定你窗體的dockareas為document就行了

第三個:

子窗體和contents的判斷

foreach(form in this.mdichildren)

//這樣判斷時,停靠的窗體是不會計算在內的

而 foreach (dockcontent frm in this.dockpanel1.contents)

}frm_b frmb = new frm_b(this);

frmb.mdiparent = form1;

frmb.show(form1.dockpanel1);

private void getfrmmain()

if (this.parent.parent.parent.parent != null)

else

現在是在a窗體中,this關鍵字已經**的不是主窗體了,那麼這裡我們就需要獲取主窗體物件

當a窗體停靠時,需要this.parent.parent.parent.parent(四個)

不停靠時,只需要三個this.parent.parent.parent

除錯**發現:停靠時

this.parent 為

this.parent.parent 為

this.parent.parent.parent 為

this.parent.parent.parent 為 就是我們要找的主窗體form1

不停靠時:

this.parent 為

this.parent.parent 為

this.parent.parent.parent 為 就是我們要找的主窗體form1

四個小問題,也算不上技巧,是我在開發中遇到過的,裡面的緣由可能解釋不是很清楚,忘大家相互**,共同進步。

DockPanel的使用與技巧

dockpanel的使用 1.建立乙個winform工程,預設生成了乙個winform窗體form1。2.引用 新增引用 瀏覽 weifenluo.winformsui.docking.dll。3.設定form1窗體屬性ismdicontainer true。4.工具箱 右鍵 選擇項 net元件 瀏...

dockPanel一種使用方法

主窗體的設定 1 主窗體定義好選單 狀態後 2 引用 新增引用 瀏覽 weifenluo.winformsui.docking.dll 3 主窗體屬性 ismdicontainer true 4 工具箱 右鍵 選擇項 net元件 瀏覽 weifenluo.winformsui.docking.dll...

DockPanel 和DockPane的區別

dockpanel類的定義為 public partial class dockpanel panel 繼承自panel 以mainform.cs 為例 窗體的灰色區域為dockpanel 控制項 其在 mainform.designer.cs定義為 public weifenluo.winform...