資源簡介
真正C# 窗體控件自動適應大小類
注意:
C#代碼,事件不要復制
一定要找到事件雙擊進到代碼窗口,
再輸入或復制,否則會有莫名的無效,為此我費了半天時間!

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Windows.Forms;
namespace?WindowsFormsApplication3
{
????class?AutoSizeFormClass
????{
????????//(1).聲明結構只記錄窗體和其控件的初始位置和大小。
????????public?struct?controlRect
????????{
????????????public?int?Left;
????????????public?int?Top;
????????????public?int?Width;
????????????public?int?Height;
????????}
????????//(2).聲明?1個對象
????????//注意這里不能使用控件列表記錄?List?nCtrl;,因為控件的關聯性,記錄的始終是當前的大小。
????????//??????public?List?oldCtrl=?new?List();//這里將西文的大于小于號都過濾掉了,只能改為中文的,使用中要改回西文
????????public?List?oldCtrl?=?new?List();
????????int?ctrlNo?=?0;//1;
????????//(3).?創建兩個函數
????????//(3.1)記錄窗體和其控件的初始位置和大小
????????public?void?controllInitializeSize(Control?mForm)
????????{
????????????controlRect?cR;
????????????cR.Left?=?mForm.Left;?cR.Top?=?mForm.Top;?cR.Width?=?mForm.Width;?cR.Height?=?mForm.Height;
????????????oldCtrl.Add(cR);//第一個為“窗體本身“只加入一次即可
????????????AddControl(mForm);//窗體內其余控件還可能嵌套控件(比如panel)要單獨抽出因為要遞歸調用
??????????????????????????????//this.WindowState?=?(System.Windows.Forms.FormWindowState)(2);//記錄完控件的初始位置和大小后,再最大化
??????????????????????????????//0?-?Normalize??1?-?Minimize2-?Maximize
????????}
????????private?void?AddControl(Control?ctl)
????????{
????????????foreach?(Control?c?in?ctl.Controls)
????????????{??//**放在這里,是先記錄控件的子控件,后記錄控件本身
???????????????//if?(c.Controls.Count?>?0)
???????????????//????AddControl(c);//窗體內其余控件還可能嵌套控件(比如panel)要單獨抽出因為要遞歸調用
????????????????controlRect?objCtrl;
????????????????objCtrl.Left?=?c.Left;?objCtrl.Top?=?c.Top;?objCtrl.Width?=?c.Width;?objCtrl.Height?=?c.Height;
????????????????oldCtrl.Add(objCtrl);
????????????????//**放在這里,是先記錄控件本身,后記錄控件的子控件
????????????????if?(c.Controls.Count?>?0)
????????????????????AddControl(c);//窗體內其余控件還可能嵌套控件(比如panel)要單獨抽出因為要遞歸調用
????????????}
????????}
????????//(3.2)控件自適應大小
????????public?void?controlAutoSize(Control?mForm)
????????{
????????????if?(ctrlNo?==?0)
????????????{?//*如果在窗體的Form1_Load中,記錄控件原始的大小和位置,正常沒有問題,但要加入皮膚就會出現問題,因為有些控件如dataGridView的的子控件還沒有完成,個數少
??????????????//*要在窗體的Form1_SizeChanged中,第一次改變大小時,記錄控件原始的大小和位置這里所有控件的子控件都已經形成
????????????????controlRect?cR;
????????????????//??cR.Left?=?mForm.Left;?cR.Top?=?mForm.Top;?cR.Width?=?mForm.Width;?cR.Height?=?mForm.Height;
????????????????cR.Left?=?0;?cR.Top?=?0;?cR.Width?=?mForm.PreferredSize.Width;?cR.Height?=?mForm.PreferredSize.Height;
????????????????oldCtrl.Add(cR);//第一個為“窗體本身“只加入一次即可
????????????????AddControl(mForm);//窗體內其余控件可能嵌套其它控件(比如panel)故單獨抽出以便遞歸調用
????????????}
????????????float?wScale?=?(float)mForm.Width?/?(float)oldCtrl[0].Width;//新舊窗體之間的比例,與最早的舊窗體
????????????float?hScale?=?(float)mForm.Height?/?(float)oldCtrl[0].Height;//.Height;
????????????ctrlNo?=?1;//進入=1,第0個為窗體本身窗體內的控件從序號1開始
????????????AutoScaleControl(mForm?wScale?hScale);//窗體內其余控件還可能嵌套控件(比如panel)要單獨抽出因為要遞歸調用
????????}
????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????57344??2017-07-31?20:29??窗口控件自適應大小\.vs\test\v14\.suo
?????文件???????1039??2017-07-31?20:12??窗口控件自適應大小\test.sln
?????文件????????189??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\App.config
?????文件???????6775??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\AutoSizeFormClass.cs
?????文件??????11264??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\bin\Debug\WindowsFormsApplication3.exe
?????文件????????189??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\bin\Debug\WindowsFormsApplication3.exe.config
?????文件??????24064??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\bin\Debug\WindowsFormsApplication3.pdb
?????文件??????22696??2017-07-31?20:29??窗口控件自適應大小\WindowsFormsApplication3\bin\Debug\WindowsFormsApplication3.vshost.exe
?????文件????????189??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\bin\Debug\WindowsFormsApplication3.vshost.exe.config
?????文件????????490??2016-07-16?19:44??窗口控件自適應大小\WindowsFormsApplication3\bin\Debug\WindowsFormsApplication3.vshost.exe.manifest
?????文件????????727??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\Form1.cs
?????文件???????3502??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\Form1.Designer.cs
?????文件???????5817??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\Form1.resx
?????文件???????1464??2017-07-31?20:23??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\DesignTimeResolveAssemblyReferences.cache
?????文件???????7195??2017-07-31?20:25??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件??????????0??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
?????文件??????????0??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
?????文件??????????0??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
?????文件???????1014??2017-07-31?20:29??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.csproj.FileListAbsolute.txt
?????文件????????976??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.csproj.GenerateResource.Cache
?????文件???????2384??2017-07-31?20:12??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.csprojResolveAssemblyReference.cache
?????文件??????11264??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.exe
?????文件????????180??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.Form1.resources
?????文件??????24064??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.pdb
?????文件????????180??2017-07-31?20:27??窗口控件自適應大小\WindowsFormsApplication3\obj\Debug\WindowsFormsApplication3.Properties.Resources.resources
?????文件????????536??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\Program.cs
?????文件???????1356??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\Properties\AssemblyInfo.cs
?????文件???????2861??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\Properties\Resources.Designer.cs
?????文件???????5612??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\Properties\Resources.resx
?????文件???????1111??2017-07-31?20:11??窗口控件自適應大小\WindowsFormsApplication3\Properties\Settings.Designer.cs
............此處省略17個文件信息
- 上一篇:批量復制一個文件到某文件夾下的所有子目錄中
- 下一篇:C#版醫院門診管理系統完整版
評論
共有 條評論