C# Winform 實(shí)現(xiàn)控件自適應(yīng)父容器大小的示例代碼
在日常開(kāi)發(fā)中經(jīng)常遇到控件不能隨著父容器大小的改變而且自動(dòng)改變控件的所在位置和大小。以下是實(shí)現(xiàn)的代碼
/// <summary> /// 根據(jù)父容器實(shí)現(xiàn)控件自適應(yīng)大小位置 /// </summary> /// <param name="control">所需自適應(yīng)大小位置的控件</param> private void ChangeLocationSizeByParent (Control control) { //記錄父容器大小,來(lái)判斷改變控件大小位置是因?yàn)楦溉萜鞯母淖冞€是通過(guò)設(shè)置控件大小位置去改變 Size parentOldSize = control.Parent.Size; PointF locationPF = new PointF(); locationPF.X = (float)control.Location.X / (float)control.Parent.Width; locationPF.Y = (float)control.Location.Y / (float)control.Parent.Height; PointF sizePF = new PointF(); sizePF.X = (float)control.Width / (float)control.Parent.Width; sizePF.Y = (float)control.Height / (float)control.Parent.Height; control.LocationChanged += delegate (Object o, EventArgs e) { if (control.Parent != null&&parentOldSize.Equals(control.Parent.Size)) { locationPF.X = (float)control.Location.X / (float)control.Parent.Width; locationPF.Y = (float)control.Location.Y / (float)control.Parent.Height; } }; control.SizeChanged += delegate (Object o, EventArgs e) { if (control.Parent != null && parentOldSize.Equals(control.Parent.Size)) { sizePF.X = (float)control.Width / (float)control.Parent.Width; sizePF.Y = (float)control.Height / (float)control.Parent.Height; } }; control.ParentChanged += delegate (Object o, EventArgs e) { if (control.Parent == null) { return; } locationPF.X = (float)control.Location.X / (float)control.Parent.Width; locationPF.Y = (float)control.Location.Y / (float)control.Parent.Height; sizePF.X = (float)control.Width / (float)control.Parent.Width; sizePF.Y = (float)control.Height / (float)control.Parent.Height; }; control.Parent.SizeChanged += delegate (Object po, EventArgs pe) { Control pControl = (Control)po; int x = (int)(pControl.Width * locationPF.X); int y = (int)(pControl.Height * locationPF.Y); control.Location = new Point(x, y); int width = (int)(pControl.Width * sizePF.X); int hetght = (int)(pControl.Height * sizePF.Y); control.Size = new Size(width, hetght); control.Refresh(); parentOldSize = pControl.Size; }; }
到此這篇關(guān)于C# Winform 實(shí)現(xiàn)控件自適應(yīng)父容器大小的示例代碼的文章就介紹到這了,更多相關(guān)C# Winform 控件自適應(yīng)父容器大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C# WinForm遍歷窗體控件的3種方法
- C# WinForm-Timer控件的使用
- c# Winform自定義控件-儀表盤(pán)功能
- C# winform自定義翻頁(yè)控件詳解
- C# WinForm實(shí)現(xiàn)窗體上控件自由拖動(dòng)功能示例
- C# WinForm制作異形窗體與控件的方法
- C#中WinForm控件的拖動(dòng)和縮放的實(shí)現(xiàn)代碼
- C# WinForm控件對(duì)透明圖片重疊時(shí)出現(xiàn)圖片不透明的簡(jiǎn)單解決方法
- C# Winform 子窗體訪問(wèn)父級(jí)窗體的控件和屬性
- c# Winform同一數(shù)據(jù)源多個(gè)控件保持同步
相關(guān)文章
C#使用Lazy實(shí)現(xiàn)延遲加載的方法示例
在C#中,Lazy< T> 類是一個(gè)非常有用的工具,它可以用于延遲加載值,在本文中,我們將詳細(xì)介紹 Lazy< T> 的實(shí)現(xiàn)機(jī)制和用法,并提供一些示例來(lái)展示它的優(yōu)勢(shì),文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-06-06C#結(jié)合Minio實(shí)現(xiàn)文件上傳存儲(chǔ)與更新
MinIO是一個(gè)開(kāi)源的對(duì)象存儲(chǔ)服務(wù)器,專門設(shè)計(jì)用于在大規(guī)模數(shù)據(jù)存儲(chǔ)環(huán)境中運(yùn)行,這篇文章主要為大家介紹了C#如何結(jié)合Minio實(shí)現(xiàn)文件上傳存儲(chǔ)與更新,需要的可以參考下2024-03-03C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10C#利用WebClient實(shí)現(xiàn)兩種方式下載文件
本篇文章主要介紹了C#利用WebClient 兩種方式下載文件,詳細(xì)的介紹了兩種方式,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-02-02