LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# WinForm控件隨窗體大小改變自動(dòng)適應(yīng)改變

admin
2024年11月20日 21:37 本文熱度 829

在設(shè)計(jì)可供用戶調(diào)整大小的窗體時(shí),如何實(shí)現(xiàn)該窗體上的控件也應(yīng)能正確地隨窗體的改變而自動(dòng)調(diào)整大小并且能重新定位?此時(shí)就要借助控件的.Anchor屬性。Anchor屬性定義控件的定位點(diǎn)位置。當(dāng)控件錨定到某個(gè)窗體時(shí),如果該窗體的大小被調(diào)整,那么該控件維持它與定位點(diǎn)位置之間的距離不變。例如,如果“:Button”控件錨定到窗體的左、右和底邊緣,那么當(dāng)調(diào)整該窗體的大小時(shí),Button控件水平調(diào)整大小,維持到該窗體左邊和右邊的距離不變,另外控件垂直定位其自身,以便其到窗體底邊的距離始終不變,如果控件未錨定而窗體的大小被調(diào)整,則該控件相對(duì)于窗體邊緣的位置將發(fā)生變化。下面介紹如何將控件錨定到窗體上。

首先,選擇要錨定的控件。然后,在屬性窗口中,單擊Anchor屬性右邊的箭頭,將顯示一個(gè)編輯器,該編輯器顯示一個(gè)十字線。若要設(shè)置定位點(diǎn),單擊該十字線的上、下、左或右部分。在默認(rèn)情況下,控件錨定左邊和上邊,若要清除已錨定控件的邊,請(qǐng)單擊該十字線的相應(yīng)臂。再次單擊Anchor屬性名稱關(guān)閉Anchor屬性編輯器。當(dāng)窗體在運(yùn)行顯示時(shí),該控件調(diào)整大小保持與該窗體邊緣的距離不變,到錨定邊緣的距離始終保持在“Windows窗體設(shè)計(jì)器”中定位該控件時(shí)所定義的距離。需要注意的是,某些控件(如ComboBox控件)有高度限制,將控件錨定到其窗體或容器的底部,無(wú)法強(qiáng)制該控件超過其高度限制。 

.NET框架允許你對(duì)子控件設(shè)置屬性,命令在調(diào)整父窗體大小時(shí),它們應(yīng)該如何運(yùn)作。用來(lái)命令控件在調(diào)整大小時(shí)動(dòng)作的兩個(gè)屬性就是“Dock”和“Anchor”。

Dock和Anchor通過將控件連接到它們父窗體的某個(gè)位置,而免除了使應(yīng)用程序具有不可預(yù)知界面的麻煩。最好的一點(diǎn)就是設(shè)立這些屬性不需要任何手寫代碼。所有事情都可以通過Visual Studio IDE中的點(diǎn)和單擊來(lái)完成。

Anchor屬性

正如名稱暗示的那樣,這個(gè)屬性迫使控件將其自身定位在父窗體或父控件中的某個(gè)相對(duì)或絕對(duì)位置。這個(gè)屬性有四個(gè)可以開啟或關(guān)閉的值:

  • Top——表示控件中與父窗體(或父控件)相關(guān)的頂部應(yīng)該保持固定。

  • Bottom——表示控件中與父窗體(或父控件)相關(guān)的底邊應(yīng)該保持固定。

  • Left——表示控件中與父窗體(或父控件)相關(guān)的左邊緣應(yīng)該保持固定。

  • Right——表示控件中與父窗體(或父控件)相關(guān)的右邊緣應(yīng)該保持固定。

要對(duì)一個(gè)控件設(shè)置Anchor屬性,只需在Visual Studio設(shè)計(jì)器中選擇控件,然后轉(zhuǎn)到屬性窗口。你會(huì)看到一個(gè)標(biāo)注為“Anchor”的屬性。點(diǎn)擊這個(gè)屬性值的部分,會(huì)出現(xiàn)一個(gè)小窗口讓你選擇想要賦予控件的錨點(diǎn)。圖表A所示是選擇了“頂邊、左邊”的anchor設(shè)置窗口。圖表B所示是選擇了“底邊、右邊”的窗口。

圖表A

Anchor工具頂部和左邊

圖表B

Anchor工具底部和右邊

在Visual Studio中,當(dāng)控件放置于窗體時(shí),默認(rèn)的anchor設(shè)置是“頂部、左邊”,這使得控件和窗體的頂邊和左邊緣固定相關(guān)。

到真正發(fā)現(xiàn)不同的anchor設(shè)置對(duì)控件的影響時(shí),你才能體會(huì)到錨定的意義。下面的圖像會(huì)有所幫助。

圖表C

小窗口

圖表C所示是一個(gè)有十個(gè)子控件的窗體。每一個(gè)子控件都有不同的Anchor屬性值,并用它的anchor設(shè)置標(biāo)注。灰白色控件后面的深紅色框是另一個(gè)子控件——它的Anchor屬性被設(shè)為頂部、底部、左邊和右邊。圖表D所示是區(qū)域被調(diào)大以后的同一個(gè)窗體。

圖表D

大窗口

正如你所看到的那樣,每一個(gè)控件在父窗體中都自動(dòng)地保持它的位置。我們沒有編寫代碼來(lái)完成這一點(diǎn);只是簡(jiǎn)單地設(shè)置了控件的Anchor屬性。

有幾個(gè)重要的地方不得不提。一個(gè)就是如果你沒有指定一個(gè)控件有左或右錨定,它將在父窗體中保留一個(gè)相對(duì)左/右位置。如果你沒有指定一個(gè)控件是否有頂部或底部錨定,也是一樣的。對(duì)于這一點(diǎn),一個(gè)很好的例子就是標(biāo)注為“無(wú)Anchor”的控件。這樣的控件沒有錨定值,所以它只是漂浮在窗體中央。

另一個(gè)極端就是選擇了所有anchor值的控件(頂部、底部、左邊、右邊)。對(duì)這一點(diǎn),圖表C圖表D中其它控件后面的深紅色方形可見物就是一個(gè)例子。當(dāng)選擇了所有的anchor值時(shí),控件只是在調(diào)整父窗體大小時(shí),隨著增大和收縮——與窗體的邊緣比較起來(lái)它的所有邊緣保持靜止不變。

Dock屬性

Dock屬性迫使控件緊貼父窗體(或控件)的某個(gè)邊緣。雖然Anchor屬性也可以實(shí)現(xiàn)這一點(diǎn),但是dock屬性使得你能夠在父窗體中讓子窗體可以在上方(或旁邊)互相“堆疊”。如果某個(gè)子窗體改變了大小,其它停駐在它旁邊的子窗體也會(huì)隨之改變。

和Anchor屬性不同的是,你可以將Dock屬性設(shè)置為一個(gè)單值。有效值如下所示:

  • Top——迫使控件位于父窗體(或控件)的頂部。如果有同一個(gè)父窗體的其它子控件也被設(shè)置為停駐在頂部的話,那么控件將在彼此上方相互堆疊。

  • Bottom——迫使控件位于父窗體(或控件)的底部。如果有同一個(gè)父窗體的其它子控件也被設(shè)置為停駐在底部的話,那么控件將在彼此上方相互堆疊。

  • Left——迫使控件位于父窗體(或控件)的左邊。如果有同一個(gè)父窗體的其它子控件也被設(shè)置為停駐在左邊的話,那么控件將在彼此旁邊相互堆疊。

  • Right——迫使控件位于父窗體(或控件)的右邊。如果有同一個(gè)父窗體的其它子控件也被設(shè)置為停駐在右邊的話,那么控件將在彼此旁邊相互堆疊。

  • Fill——迫使控件位于父窗體(或控件)的上方。如果有同一個(gè)父窗體的其它子控件也被設(shè)置為停駐在上方的話,那么控件將在彼此上方相互堆疊。

  • None——表示控件將會(huì)正常運(yùn)轉(zhuǎn)。

要設(shè)置一個(gè)控件的Dock值,選擇Visual Studio中的控件,然后轉(zhuǎn)到屬性窗口。你會(huì)看到一個(gè)標(biāo)注為“Dock”的屬性。點(diǎn)擊這個(gè)屬性的值的部分,會(huì)出現(xiàn)一個(gè)小窗口讓你指定該控件將如何停駐。被賦予各種值的該窗體將顯示在以下圖像中(圖表E、圖表F和圖表G):

圖表E

選擇停駐左邊

圖表F

選擇停駐填充

圖表G

選擇停駐頂部

和Anchor屬性一樣,直到發(fā)現(xiàn)它起了作用,你才會(huì)意識(shí)到它們的重要意義。圖表H所示的是一個(gè)有5個(gè)子控件的窗體,每個(gè)子窗體都設(shè)置了不同的dock值。

圖表H

有不同dock值的5個(gè)子控件

圖表I所示的是和圖表H一樣的窗口,除了一點(diǎn),就是現(xiàn)在窗口已經(jīng)被調(diào)整為更大的軌跡。

圖表I

更大的軌跡

圖表J又顯示的是和圖表H一樣的窗口,這次不同的是位于窗體底部、頂部、左邊和右邊的控件變小了。注意位于窗體中間被設(shè)置為dock Fill的控件,自動(dòng)變大了。

圖表J

更小的軌跡

需要記住的是,對(duì)于Dock屬性,添加控件的順序會(huì)影響它們停駐的方式。例如,如果你對(duì)窗體添加控件A,指示其停駐填充,然后你對(duì)窗體添加控件B并指示其停駐頂部,控件B將覆蓋控件A的上部。原因就是控件B被認(rèn)為是在控件A的“前方”,因?yàn)樗窃诳丶嗀之后添加的。

要解決這種情況,你必須在Visual Studio中右擊控件A,并在上下文菜單中選擇“放到前面(Bring To Front)”。這樣就能使控件A出現(xiàn)在控件B的前方,控件也就能像預(yù)期的那樣運(yùn)作了。


該文章在 2024/11/21 11:09:33 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲人成在线播放a偷伦 | 免费国产高清精品一区在线 | 台湾综合区国产精品 | 亚洲一级免费在线视频 | 在线不卡日本v一区v二区 | 亚洲欧美日韩中文二区 |