C WinForm控制項之Dock先後順序調整

2021-07-30 23:16:54 字數 994 閱讀 2106

最近被.net winform中的控制項布局搞困惑了,由於控制項都是使用dock方式的,操作起來也是比較方便,如果最大化,視窗大小調整等,都可以隨著視窗大小的變化而變化。

但問題是,.net winform的dock方式是根據先新增的控制項順序進行優先順序dock排列的,假設我想目前有三個控制項a、b、c分別以 top、bottom以及fill方式填充視窗即視窗看起來應該是這樣的:

---------------------

a---------------------

c---------------------

b----------------------

問題來了,現在我想新增d控制項在a及c中間怎麼辦?嘗試了不少辦法都不行,一般都會覆蓋掉c控制項的,也就是最後新增的控制項。

在網上查詢,很多人都提出一種無奈的解決方案,那就是重新來過,將控制項再次新增到視窗form中,雖然可以解決dock布局帶來的困擾,但帶來的是工作量的倍增同時很難調整到跟之前的布局一模一樣 。

想來這都不是解決的辦法,新增新增,我一直想,對了先新增的控制項具有dock的優先排序權,應該可以從designer檔案中著手啊。

找到以下**:

this.controls.add(

this.d); 

this.controls.add(this.c);

this.controls.add(this.b);

this.controls.add(this.a);

將**的順序調整為:

this.controls.add(

this.c); 

this.controls.add(

this.d);

this.controls.add(

this.b);

this.controls.add(

this.a);

問題即解決了。

由此可見,在desinger檔案中是以後新增的控制項為優先權高來dock排序,即a控制項的排序優先權最高(下面的控制項優先高)。

C WinForm控制項之Dock順序調整

最近被.net winform中的控制項布局搞困惑了,由於控制項都是使用dock方式的,操作起來也是比較方便,如果最大化,視窗大小調整等,都可以隨著視窗大小的變化而變化。但問題是,net winform的dock方式是根據先新增的控制項順序進行優先順序dock排列的,假設我想目前有三個控制項a b ...

C WinForm控制項之Dock先後順序調整

postfxj 最近被.net winform中的控制項布局搞困惑了,由於控制項都是使用dock方式的,操作起來也是比較方便,如果最大化,視窗大小調整等,都可以隨著視窗大小的變化而變化。但問題是,net winform的dock方式是根據先新增的控制項順序進行優先順序dock排列的,假設我想目前有三...

C Winform控制項動態刪除

wpf控制項的動態刪除請參考wpf動態刪除指定型別控制項 今天在實現控制項動態刪除過程中遇到了點小trouble,就是在刪除的過程中只能刪除一半,具體 如下 foreach var control in from ctls in controlutility.getcontrols panel1 w...