小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

利用Anchor和Dock屬性管理WinForm控件

 ShangShujie 2007-05-08

    有一點讓許多剛接觸WinForms編程的開發(fā)者感到很棘手,就是在用戶調(diào)整各種控件的大小時,怎樣使它們的窗體保持同步,并與父窗體相稱。這可以成為一種讓人非常沮喪的情況,尤其是對于有著Web編程背景,轉(zhuǎn)為WinForms的開發(fā)者來說。

    為了緩解這個問題,.NET框架允許你對子控件設(shè)置屬性,命令在調(diào)整父窗體大小時,它們應(yīng)該如何運作。用來命令控件在調(diào)整大小時動作的兩個屬性就是“Dock”和“Anchor”。

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

    Anchor屬性

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

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

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

    圖表A

    利用Anchor和Dock屬性管理WinForm控件

    Anchor工具頂部和左邊

    圖表B

    利用Anchor和Dock屬性管理WinForm控件

    Anchor工具底部和右邊

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

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

    圖表C

    利用Anchor和Dock屬性管理WinForm控件

    小窗口

    圖表C所示是一個有十個子控件的窗體。每一個子控件都有不同的Anchor屬性值,并用它的anchor設(shè)置標注?;野咨丶竺娴纳罴t色框是另一個子控件——它的Anchor屬性被設(shè)為頂部、底部、左邊和右邊。圖表D所示是區(qū)域被調(diào)大以后的同一個窗體。

    圖表D

    利用Anchor和Dock屬性管理WinForm控件

    大窗口

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

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

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

    Dock屬性

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

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

    • Top——迫使控件位于父窗體(或控件)的頂部。如果有同一個父窗體的其它子控件也被設(shè)置為停駐在頂部的話,那么控件將在彼此上方相互堆疊。
    • Bottom——迫使控件位于父窗體(或控件)的底部。如果有同一個父窗體的其它子控件也被設(shè)置為停駐在底部的話,那么控件將在彼此上方相互堆疊。
    • Left——迫使控件位于父窗體(或控件)的左邊。如果有同一個父窗體的其它子控件也被設(shè)置為停駐在左邊的話,那么控件將在彼此旁邊相互堆疊。
    • Right——迫使控件位于父窗體(或控件)的右邊。如果有同一個父窗體的其它子控件也被設(shè)置為停駐在右邊的話,那么控件將在彼此旁邊相互堆疊。
    • Fill——迫使控件位于父窗體(或控件)的上方。如果有同一個父窗體的其它子控件也被設(shè)置為停駐在上方的話,那么控件將在彼此上方相互堆疊。
    • None——表示控件將會正常運轉(zhuǎn)。

     

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多