Winform最大化缩放、不可移动-创新互联

  1. 大化缩放

    创新互联公司专注于企业成都全网营销推广、网站重做改版、日照网站定制设计、自适应品牌网站建设、H5开发商城网站建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为日照等各大城市提供网站开发制作服务。

//界面初始化

private void frmTemp_Load(object sender, EventArgs e)

      {

           //全屏显示

          Rectangle ScreenArea = System.Windows.Forms.Screen.GetWorkingArea(this);

          //设置水平伸缩比例

          dbScaleX = ScreenArea.Width /Convert.ToDouble(this.Width);

          //设置垂直伸缩比例

          dbScaleY = ScreenArea.Height /Convert.ToDouble(this.Height);

          this.Width = ScreenArea.Width;

          this.Height = ScreenArea.Height;

          //窗体的位置由   Location   属性确定。

          this.StartPosition = FormStartPosition.Manual;

          this.Location = new Point(0, 0);

          this.MaximizeBox = false;

          this.MinimizeBox = false;

          controlsDfsToResize(frmMain.Instance.Controls,dbScaleX,dbScaleY);

}

      ///

      /// 对form中的控件进行深度优先遍历,

      /// 随着Form的大小调整子控件的大小及位置

      ///

      ///

      private static void controlsDfsToResize(Control.ControlCollection controls, double dbScaleX,double dbScaleY)

      {

          foreach (Control ctrl in controls)

          {

              ctrl.Left = (int)(Convert.ToDouble(ctrl.Left) * dbScaleX);

              ctrl.Top = (int)(Convert.ToDouble(ctrl.Top) * dbScaleY);

              ctrl.Width = (int)(Convert.ToDouble(ctrl.Width) * dbScaleX);

              ctrl.Height = (int)(Convert.ToDouble(ctrl.Height) * dbScaleY);

              //如果控件是Datagridview,则缩放列的行宽

              if (ctrl.GetType().Equals(typeof(DataGridView)))

              {

                  DataGridView dgv = (DataGridView)ctrl;

                  foreach (DataGridViewColumn col in dgv.Columns)

                  {

                      col.Width = Convert.ToInt32(col.Width * dbScaleX);

                  }

              }

              if (ctrl.Controls.Count > 0)

              {

                  controlsDfsToResize(ctrl.Controls, dbScaleX, dbScaleY);

              }

          }

      }

2.不可移动

      ///

      /// 欺骗窗体,让窗体认为点击的为非窗体区域,从而实现不可移动(有BUG,所以需要下面的函数)

      ///

      ///

      protected override void WndProc(ref Message m)

      {

          if(m.Msg == 0x00A1 && m.WParam.ToInt32() == 2)

          {

              m.Msg = 0x0201;

              m.LParam = IntPtr.Zero;

          }

          base.WndProc(ref m);

      }

      ///

      /// 不让窗体移动

      ///

      ///

      ///

      private void frmMain_Move(object sender, EventArgs e)

      {

          this.Location = new Point(0,0);

      }

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


名称栏目:Winform最大化缩放、不可移动-创新互联
本文来源:http://myzitong.com/article/doedoh.html