Winform最大化缩放、不可移动
最大化缩放
创新互联服务项目包括尖山网站建设、尖山网站制作、尖山网页制作以及尖山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,尖山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到尖山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
//界面初始化
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);
}
名称栏目:Winform最大化缩放、不可移动
标题URL:http://scyanting.com/article/piejoi.html