问题描述
namespacekeyshare{classAutoSizeFormClass{//声明结构,记录初始窗体的位置和控件大小publicstructControlRect{publicintLeft;publicintTop;publicintWidth;publicintHeight;}//声明对象记录当前大小publicList<ControlRect>Oldcontrol;//C两个函数,记录控件和窗体的初始大小publicvoidcontrolInitsize(Form1mFrom1){Oldcontrol=newList<ControlRect>();ControlRectcR;cR.Left=mFrom1.Left;cR.Top=mFrom1.Top;cR.Width=mFrom1.Width;cR.Height=mFrom1.Height;Oldcontrol.Add(cR);foreach(ControlcinmFrom1.Controls){ControlRectobjCtrl;objCtrl.Left=c.Left;objCtrl.Top=c.Top;objCtrl.Width=c.Width;objCtrl.Height=c.Height;Oldcontrol.Add(objCtrl);}}//控件自适应大小publicvoidcontrolautosize(Form1mForm1){//新旧窗体之间的比例floatwScale=(float)mForm1.Width/(float)Oldcontrol[0].Width;//floathScale=(float)mForm1.Height/(float)Oldcontrol[0].Height;intctrLeft0,ctrTop0,ctrWidth0,ctrHeight0;intctrNo=1;//控件序列号,默认为1foreach(ControlcinmForm1.Controls){ctrLeft0=Oldcontrol[ctrNo].Left;ctrTop0=Oldcontrol[ctrNo].Top;ctrWidth0=Oldcontrol[ctrNo].Width;ctrHeight0=Oldcontrol[ctrNo].Height;c.Left=(int)((ctrLeft0)*wScale);//新旧控件之间的线性比例。控件位置只相对于窗体,所以不能加+wLeft1c.Top=(int)((ctrTop0)*hScale);//c.Width=(int)((ctrWidth0)*wScale);//只与最初的大小相关,所以不能与现在的宽度相乘(int)(c.Width*w);c.Height=(int)((ctrHeight0)*hScale);//ctrNo+=1;}}}}
解决方案
解决方案二:
Oldcontrol未赋值或初始化。
解决方案三:
变量Oldcontrol==null了
解决方案四:
怎么解?求详细点