日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】

發布時間:2023/12/10 C# 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個在做winform程序的空間編程的時候遇到過太多次了,自己也想留下點經驗,搜索了一下,這篇文章很好很強大了,感謝博主“驢子的菜園”。

程序界面如上

各部分簡要說明: 整個窗體上覆蓋一個splitcontainer。

splitcontainer的panel1上放置一個label與一個treeview.

splitcontainer的panel2上放置一個tabcontrol.

tabcontrol上面有兩個tabpage

tabpage1上放置一個組合框,按鈕兩個。go 為button1,back 為button2.下面是一個webbrowser

tabpage2上放置了依次放置的控件為label 2,textbox1,label3,textbox2(具有multiline屬性)

tabcontrol下方放了四個按鈕。依次為button3,button4,button5,button6

下面簡要介紹下dock和anchor的意義:

dock屬性控制子控件在父窗口的停靠位置;anchor屬性控制子控件與父控件之間的距離(自己動手試一下就明白了)

下面介紹各個控件的dock和anchor屬性設置情況:

splitcontainer1:

1.anchor:top left;

2.dock :fill(充滿整個窗體,使splitcontainer的大小隨著winform的大小的改變而改變);

?

label1:

1.anchor: top left;

2.dock :none;

?

treeview1:

1.anchor:top left bottom right(即使窗體變化時,保持treeview1的四個邊距離其父控件的距離不變,也就是treeview1跟著變大的意思);

2.dock:none;

?

tabcontrol1:

1.anchor:top left

2.dock:fill;

combobox1:

1.anchor:top left right(即當窗體變化時此控件的上邊,左邊,右邊距離父控件的位置不變);

2.dock:none;

?

button1(go),button2(back):

1.anchor: top right;

2.dock:none.

?

webbrowser1:

1.anchor:top left right bottom

2.dock:none

?

tabpage2 上的 label2,label3 設置如label1;

textbox2,textbox3設置如combobox1

下面介紹四個button如何設置

我們設置button3(帖子提取)的anchor為 left,bottom,dock 為none;其他button的anchor屬性設置為bottom,dock屬性設置為none;

??? 當窗體長度發生變化時,我們將tabcontrol的長度分成四份(因為有四個button)。a1,a2,a3,a4,分別配給每個button。每個 button的長度為其所占用長度的3/4(這個可以隨意設)代碼如下:

?

窗體變化也button變化
privatevoid Form1_Resize(object sender, EventArgs e)
{

int length =this.tabControl1.Width /4;
int s=length*3/4;

button3.Width
= s;
button4.Width
= s;
button5.Width
= s;
button6.Width
= s;
button4.Location
=new?? Point(button3.Location.X + length, button3.Location.Y);
button5.Location
=new Point(button4.Location.X + length, button4.Location.Y);
button6.Location
=new Point(button5.Location.X+length, button5.Location.Y);



}

注意:要在form1_load中加入代碼句: this.Resize += new System.EventHandler(this.Form1_Resize);//托管

?

當我們拖拽splitcontainer時也應該有button變化。故設計代碼如下:

?

窗體不變,panel1和 pannel2相對變化,button也變化
privatevoid splitContainer1_SplitterMoved(object sender, SplitterEventArgs e)
{
int length =this.tabControl1.Width /4;
int s = length *3/4;

button3.Width
= s;
button4.Width
= s;
button5.Width
= s;
button6.Width
= s;
button4.Location
=new Point(button3.Location.X + length, button3.Location.Y);
button5.Location
=new Point(button4.Location.X + length, button4.Location.Y);
button6.Location
=new Point(button5.Location.X + length, button5.Location.Y);
}

?

經過如上設置,我們的窗體界面就設計好了。我還是菜鳥,有理解不對的地方,還懇請大家指證。

轉載于:https://www.cnblogs.com/280850911/archive/2012/05/18/2507838.html

總結

以上是生活随笔為你收集整理的C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。