Winform 最大化缩放、不可移动

  1. 最大化缩放

//界面初始化

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);

}

/// <summary>

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

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

/// </summary>

/// <param name="controls"></param>

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.不可移动

/// <summary>

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

/// </summary>

/// <param name="m"></param>

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);

}

/// <summary>

/// 不让窗体移动

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void frmMain_Move(object sender, EventArgs e)

{

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

}

时间: 2024-10-26 15:48:04

Winform 最大化缩放、不可移动的相关文章

WinForm 窗体缩放动画效果

using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Windows.Forms; using System.Drawing; using System.Diagnostics; namespace AnimatedTransform { static class FormTransform { public static void Trans

一句话知识:如何解决winform自动缩放产生的布局问题.

转自http://www.cnblogs.com/KenBlove/articles/1281823.html有时候你会发现本来好好的WinForm程序在别的机器上显示的尺寸就不对了.这些问题主要发生在背景图片.图片框.窗口布局上.那么那就很可能是因为WinForm的自动放缩功能. 因为不同语言的系统使用不同的缺省字体,相同字体的系统也可能使用不同的DPI(字符的每英寸点数),传统的Win32程序在不同的系统上经常遇到文本显示不全的问题..NET的WinForm提供了自动放缩的功能来试图解决该问

WinForm 窗口缩放动画效果

using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Windows.Forms; using System.Drawing; using System.Diagnostics; namespace AnimatedTransform { static class FormTransform { public static void Trans

Layx——网页弹窗最佳选择.

开源文档地址 开源地址:https://gitee.com/monksoul/LayX 文档地址:http://baisoft.gotoip11.com/layx/doc/ 前言 大家好,我叫百小僧,是一名C#开发工程师,同时也擅长多种程序语言.平时的工作都是开发企业管理系统(ERP.CRM).目前企业管理系统更多都是C/S架构的,而且C/S架构多窗口处理数据更加灵活.刚好公司为了顺应潮流将现有的企业管理系统采用全新B/S架构全新开发,我们最初的想法是在B/S结构界面中采用类似浏览器多标签页模式

Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)

 Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题) 2016-12-04 20:11 362人阅读 评论(4) 收藏 举报  分类: Halcon 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] HWindowControl控件初步使用 最近在学习新的视觉处理工具–Halcon软件包,本人学习的主要是HDevelop.Halcon与C#混编以及Halcon与C++混编.这里再多缀一句:11版本后C++编程,包含的是h

如何去掉WinForm或者WPF的最大化和最小化按钮

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何去掉WinForm或者WPF的最大化和最小化按钮.

winForm窗体最大化的设置

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

关于winform中子窗体最大化的问题

在构建winform程序时,普遍的做法是将主窗体设置成 MDI Container,使它可以放置工作窗体(Form 而非 UserControl).工作窗体作为子窗体填充工作区,一般设置 FormBorderStyle = None,不显示标题栏和边框,然后最大化.最大化设置上有个要点,如果设置WinformState = Maxmized,则会出现很多不希望的结果,比如右上角会出现关闭子窗体按钮,标题内容会合并,主菜单合并等等,你不得不佩服MDI这种烦恼的特性. 如果不设置 WindowSta

WinForm MDi子窗体最大化导致子窗体标题栏和主窗体菜单栏合并问题的解决方法

在主窗体菜单栏的ItemAdded事件中编写如下代码: *msMain是我的主窗体菜单栏的Name属性值 //子窗体最大化不显示图标 private void msMain_ItemAdded(object sender, ToolStripItemEventArgs e) { if (e.Item.Text.Length == 0) { e.Item.Visible = false; } else { e.Item.Visible = true; } } 说明: 打开的子窗体最大化的时候,菜单