您好,登錄后才能下訂單哦!
小編給大家分享一下C#中Winform如何實現控件自適應父容器大小,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
在日常開發中經常遇到控件不能隨著父容器大小的改變而且自動改變控件的所在位置和大小。以下是實現的代碼
/// <summary> /// 根據父容器實現控件自適應大小位置 /// </summary> /// <param name="control">所需自適應大小位置的控件</param> private void ChangeLocationSizeByParent (Control control) { //記錄父容器大小,來判斷改變控件大小位置是因為父容器的改變還是通過設置控件大小位置去改變 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; }; }
看完了這篇文章,相信你對“C#中Winform如何實現控件自適應父容器大小”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。