C#控制元件隨著視窗大小變化而自動變化
.NET框架允許你對子控制元件設定屬性,命令在調整父窗體大小時,它們應該如何運作。用來命令控制元件在調整大小時動作的兩個屬性就是“Dock”和“Anchor”。
Dock和Anchor通過將控制元件連線到它們父窗體的某個位置,而免除了使應用程式具有不可預知介面的麻煩。最好的一點就是設立這些屬性不需要任何手寫程式碼。所有事情都可以通過Visual Studio IDE中的點和單擊來完成。
Anchor屬性
正如名稱暗示的那樣,這個屬性迫使控制元件將其自身定位在父窗體或父控制元件中的某個相對或絕對位置。這個屬性有四個可以開啟或關閉的值:
- Top——表示控制元件中與父窗體(或父控制元件)相關的頂部應該保持固定。
- Bottom——表示控制元件中與父窗體(或父控制元件)相關的底邊應該保持固定。
- Left——表示控制元件中與父窗體(或父控制元件)相關的左邊緣應該保持固定。
- Right——表示控制元件中與父窗體(或父控制元件)相關的右邊緣應該保持固定。
要對一個控制元件設定Anchor屬性,只需在Visual Studio設計器中選擇控制元件,然後轉到屬性視窗。你會看到一個標註為“Anchor”的屬性。點選這個屬性值的部分,會出現一個小視窗讓你選擇想要賦予控制元件的錨點。圖表A所示是選擇了“頂邊、左邊”的anchor設定視窗。圖表B所示是選擇了“底邊、右邊”的視窗。
圖表A |
|
Anchor工具頂部和左邊 |
圖表B |
|
Anchor工具底部和右邊 |
在Visual Studio中,當控制元件放置於窗體時,預設的anchor設定是“頂部、左邊”,這使得控制元件和窗體的頂邊和左邊緣固定相關。
到真正發現不同的anchor設定對控制元件的影響時,你才能體會到錨定的意義。下面的影象會有所幫助。
圖表C |
|
小視窗 |
圖表C所示是一個有十個子控制元件的窗體。每一個子控制元件都有不同的Anchor屬性值,並用它的anchor設定標註。灰白色控制元件後面的深紅色框是另一個子控制元件——它的Anchor屬性被設為頂部、底部、左邊和右邊。圖表D所示是區域被調大以後的同一個窗體。
圖表D |
|
大視窗 |
正如你所看到的那樣,每一個控制元件在父窗體中都自動地保持它的位置。我們沒有編寫程式碼來完成這一點;只是簡單地設定了控制元件的Anchor屬性。
有幾個重要的地方不得不提。一個就是如果你沒有指定一個控制元件有左或右錨定,它將在父窗體中保留一個相對左/右位置。如果你沒有指定一個控制元件是否有頂部或底部錨定,也是一樣的。對於這一點,一個很好的例子就是標註為“無Anchor”的控制元件。這樣的控制元件沒有錨定值,所以它只是漂浮在窗體中央。
另一個極端就是選擇了所有anchor值的控制元件(頂部、底部、左邊、右邊)。對這一點,圖表C和圖表D中其它控制元件後面的深紅色方形可見物就是一個例子。當選擇了所有的anchor值時,控制元件只是在調整父窗體大小時,隨著增大和收縮——與窗體的邊緣比較起來它的所有邊緣保持靜止不變。
Dock屬性
Dock屬性迫使控制元件緊貼父窗體(或控制元件)的某個邊緣。雖然Anchor屬性也可以實現這一點,但是dock屬性使得你能夠在父窗體中讓子窗體可以在上方(或旁邊)互相“堆疊”。如果某個子窗體改變了大小,其它停駐在它旁邊的子窗體也會隨之改變。
和Anchor屬性不同的是,你可以將Dock屬性設定為一個單值。有效值如下所示:
- Top——迫使控制元件位於父窗體(或控制元件)的頂部。如果有同一個父窗體的其它子控制元件也被設定為停駐在頂部的話,那麼控制元件將在彼此上方相互堆疊。
- Bottom——迫使控制元件位於父窗體(或控制元件)的底部。如果有同一個父窗體的其它子控制元件也被設定為停駐在底部的話,那麼控制元件將在彼此上方相互堆疊。
- Left——迫使控制元件位於父窗體(或控制元件)的左邊。如果有同一個父窗體的其它子控制元件也被設定為停駐在左邊的話,那麼控制元件將在彼此旁邊相互堆疊。
- Right——迫使控制元件位於父窗體(或控制元件)的右邊。如果有同一個父窗體的其它子控制元件也被設定為停駐在右邊的話,那麼控制元件將在彼此旁邊相互堆疊。
- Fill——迫使控制元件位於父窗體(或控制元件)的上方。如果有同一個父窗體的其它子控制元件也被設定為停駐在上方的話,那麼控制元件將在彼此上方相互堆疊。
- None——表示控制元件將會正常運轉。
要設定一個控制元件的Dock值,選擇Visual Studio中的控制元件,然後轉到屬性視窗。你會看到一個標註為“Dock”的屬性。點選這個屬性的值的部分,會出現一個小視窗讓你指定該控制元件將如何停駐。被賦予各種值的該窗體將顯示在以下影象中(圖表E、圖表F和圖表G):
圖表E |
|
選擇停駐左邊 |
圖表F |
|
選擇停駐填充 |
圖表G |
|
選擇停駐頂部 |
和Anchor屬性一樣,直到發現它起了作用,你才會意識到它們的重要意義。圖表H所示的是一個有5個子控制元件的窗體,每個子窗體都設定了不同的dock值。
圖表H |
|
有不同dock值的5個子控制元件 |
圖表I所示的是和圖表H一樣的視窗,除了一點,就是現在視窗已經被調整為更大的軌跡。
圖表I |
|
更大的軌跡 |
圖表J又顯示的是和圖表H一樣的視窗,這次不同的是位於窗體底部、頂部、左邊和右邊的控制元件變小了。注意位於窗體中間被設定為dock Fill的控制元件,自動變大了。
圖表J |
|
更小的軌跡 |
需要記住的是,對於Dock屬性,新增控制元件的順序會影響它們停駐的方式。例如,如果你對窗體新增控制元件A,指示其停駐填充,然後你對窗體新增控制元件B並指示其停駐頂部,控制元件B將覆蓋控制元件A的上部。原因就是控制元件B被認為是在控制元件A的“前方”,因為它是在控制元件A之後新增的。
要解決這種情況,你必須在Visual Studio中右擊控制元件A,並在上下文選單中選擇“放到前面(Bring To Front)”。這樣就能使控制元件A出現在控制元件B的前方,控制元件也就能像預期的那樣運作了。
相關推薦
C#控制元件隨著視窗大小變化而自動變化
.NET框架允許你對子控制元件設定屬性,命令在調整父窗體大小時,它們應該如何運作。用來命令控制元件在調整大小時動作的兩個屬性就是“Dock”和“Anchor”。 Dock和Anchor通過將控制元件連線到它們父窗體的某個位置,而免除了使應用程式具有不可預知介面的麻煩。最好的一點就是設立這些屬性不需要任何
pyqt視窗控制元件跟隨視窗大小變化而變化的方法
要做的很簡單,使用qtdesigner對設計的介面配置一下layout,頁面佈局,即可實現拖拽時介面中控制元件的放大縮小. 這是佈局時的幾種方式: Lay Out Horizontally : 縱向佈局 Lay Out Vertically:橫向佈局 Lay Ou
MFC控制元件隨視窗大小變化,多次縮放不改變位置
MFC控制元件隨視窗大小變化,多次縮放不影響位置 void CMyCefTestDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); // TODO: 在此處新
Qt控制元件隨視窗大小變化的設定方法(QTDesigner)
1 新建窗體(Dialog、MainWindow或Widget都行); 2 拖一個控制元件到窗體上(任何控制元件都可以:layout、button、或check box); 3 在窗體空白處右鍵→佈局→柵格佈局(G),即可; 4 如果第二步新增的layout控制元件,有時,
淺談 Qt 佈局管理器 如何讓控制元件隨著視窗變化
Qt 佈局管理器 基礎學習是本文要介紹的內容,學習Qt的時候,參照幫助手冊和相關書籍,其中的例子幾乎都是手動的編寫程式碼。至於方便設計介面的Qt designer的例子幾乎就沒有,想在designer中實現子視窗隨主視窗大小變化而變化,整的我鬱悶了老半天,後來閱讀Qt
一、WPF佈局之讓你的控制元件隨著視窗等比放大縮小,適應多解析度滿屏填充應用
一直以來,我們設計windows應用程式,都是將控制元件的尺寸定好,無論窗體大小怎麼變,都不會改變,這樣的設計對於一般的應用程式來說是沒有問題的,但是對於一些比較特殊的應用,比如有背景圖片的,需要鋪面整個螢幕,由於存在多種不同的解析度,所以會出現佈局混亂的情況。今天我們來看
C#如何讓控制元件隨著窗體變化大小
分析需求 各位請看這個小窗體,我把這控制元件按陣型依次排開, 可當我讓窗體全屏顯示的時候,問題就出來了!如圖 如何全屏顯示窗體裡的控制元件 採用Form_Resize(
C#控制元件大小隨窗體大小等比例變化
C#控制元件大小隨窗體大小等比例變化 轉載自:http://www.knowsky.com/898409.html 相信很多博友在開發初次接觸學習C# winForm時,當窗體大小變化時,窗體內的控制元件並沒有隨著窗體的變化而變化,最近因為一個專案工程的原因,也需要解
QT中的UI介面控制元件隨視窗自適應變化大小
QT5中的UI介面 控制元件隨視窗自適應變化大小 點選UI介面檔案控制元件間的空白區域,然後選擇工具中的柵格佈局(網格佈局),點選後,它會自動調整你的控制元件大小,預設將你的widget的框長
如何實現控制元件隨對話方塊大小變化而自動調整大小和位置
1. 處理對話方塊的WM_SIZE,然後用MoveWindow或者SetWindowPos來把對話方塊上面的控制元件重新調整新位置和大小。 2. 基本的做法就是響應WM_SIZE訊息,並按照視窗大小比例來調整控制元件的位置和大小,控制元件的大小最好設定成視窗的百分之幾,這
MFC 控制元件隨視窗尺寸變化自動調整位置及大小
在MFC對話方塊程式設計過程中經常會出現這樣一個問題,在給視窗做尺度變換後,原來的控制元件位置和大小並沒有跟著變,導致介面看起來極不協調,如下: 要解決這個問題,可在類結構體中宣
C#中使控制元件隨著窗體一起變化(常見困難以及修正)
1.使用一些佈局面板,比如FlowLayoutPanel,TabLayOutPanel之類,但是缺點就是樣式太死了。所以本人不採用。 2.採用Dock和Anchor屬性。這類雖然滑鼠點幾下在屬性欄設定一下就好,但是缺乏靈活性。只有上下左右中間幾種選擇。 3.採用Form_Resize()。這
MFC 控制元件隨著對話方塊大小的改變而改變
1.控制元件隨著對話方塊的最小化,最大化而改變大小步驟: (1)首先在對話方塊類中定義一個CRect oldRect的類 (2)在Initstance()函式中獲得GetClientRect(&oldRect) (3) 新增WM_SIZE函式 OnSize()函式
QT5中的UI介面 控制元件隨視窗自適應變化大小 無需寫任何程式碼!
為完成BOSS交給我的在QT中整合OSG開發環境,做出QT介面,之前一直用UI介面檔案做。如下圖所示。左側是widget框,右邊是2個scrollarea,之前介面預設大小不大,執行後點擊
讓控制元件隨窗體大小變化而變化~WinForms控制元件自適應窗體大小
簡單的來說就是監控,定位+保持比例。 例如介面分為左右下三部分,其中下部分最好解決。使用Dock屬性直接定位到Bottom。難點就是上面的左右兩塊。 我的做法是:外面套一層,然後分割為左右兩部分。這裡採用TableLayoutPanel為例。將TableLayoutP
VS2013 MFC 對話方塊控制元件大小隨視窗大小改變而改變
視窗大小改變後控制元件大小也隨之改變 在對話方塊標頭檔案中定義 標頭檔案名稱:專案名稱Dlg.h POINT Old;//存放對話方塊的寬和高。 對話方塊cpp中初始化 cpp檔名稱:專案名稱Dlg.cpp 在OnInitDialog()函
在.Net的WinForm開發中如何實現控制元件隨窗體大小的改變而自動適應其改變
在設計可供使用者調整大小的窗體時,如何實現該窗體上的控制元件也應能正確地隨窗體的改變而自動調整大小並且能重新定位?此時就要藉助控制元件的.Anchor屬性。Anchor屬性定義控制元件的定位點位置。當控制元件錨定到某個窗體時,如果該窗體的大小被調整,那麼該控制元件維持它與定位
C# Winform 一個可以用滑鼠改變控制元件位置和大小的類,直接呼叫即可.....(程式碼收藏)
using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Data; using System.
C#中WinForm實現控制元件隨窗體大小自適應改變
.NET框架允許你對子控制元件設定屬性,命令在調整父窗體大小時,它們應該如何運作。用來命令控制元件在調整大小時動作的兩個屬性就是“Dock”和“Anchor”。 Dock和Anchor通過將控制元件連線到它們父窗體的某個位置,而免除了使應用程式具有不可預知介面的麻煩。最好的一點就是設立這些屬性不需要任何
c#如何保持控制元件位置與窗體同比例?C#實現窗體控制元件隨窗體大小改變(包括字型大小)
可以通過Dock屬性和Anchor屬性來控制 設定控制元件的 Anchor屬性 如果要隨著窗體變化而變化 則設定為Top, Bottom, Left, Right 當然也可以只設定期中幾個值 左邊的設定TOP,LEFT,中間設NONE,右邊的設right,bottom