`

Window Form所有组件按主Form扩大

    博客分类:
  • C#
 
阅读更多

今天遇到了Form 扩大到问题,写下了如下代码,希望对大家有用

 

添加Event

            this.SizeChanged += new System.EventHandler(this.××_SizeChanged);

下面就是基本的代码

private ArrayList InitialCrl = new ArrayList();
        private ArrayList CrlLocationX = new ArrayList();
        private ArrayList CrlLocationY = new ArrayList();
        private ArrayList CrlSizeWidth = new ArrayList();
        private ArrayList CrlSizeHeight = new ArrayList();
        private int FormSizeWidth;
        private int FormSizeHeight;

        private double FormSizeChangedX;
        private double FormSizeChangedY;

        private int Wcounter = 0;

        private void ××_Load(object sender, EventArgs e)
        {
            GetInitialFormSize();
            GetAllCrlLocation(this);
            GetAllCrlSize(this);
        }

        public void GetAllCrlLocation(Control CrlContainer)
        {
            foreach (Control iCrl in CrlContainer.Controls)
            {

                if (iCrl.Controls.Count > 0)
                    GetAllCrlLocation(iCrl);
                InitialCrl.Add(iCrl);
                CrlLocationX.Add(iCrl.Location.X);
                CrlLocationY.Add(iCrl.Location.Y);


            }
        }
        public void GetAllCrlSize(Control CrlContainer)
        {
            foreach (Control iCrl in CrlContainer.Controls)
            {
                if (iCrl.Controls.Count > 0)
                    GetAllCrlSize(iCrl);
                CrlSizeWidth.Add(iCrl.Width);
                CrlSizeHeight.Add(iCrl.Height);
            }
        }
        public void GetInitialFormSize()
        {

            FormSizeWidth = this.Size.Width;
            FormSizeHeight = this.Size.Height;

        } 

        private void ××_SizeChanged(object sender, EventArgs e)
        {
            Wcounter = 0;
            int counter = 0;
            if (this.Size.Width < FormSizeWidth || this.Size.Height < FormSizeHeight)
            {
               
                foreach (Control iniCrl in InitialCrl)
                {
                    iniCrl.Width = (int)CrlSizeWidth[counter];
                    iniCrl.Height = (int)CrlSizeHeight[counter];
                    Point point = new Point();
                    point.X = (int)CrlLocationX[counter];
                    point.Y = (int)CrlLocationY[counter];
                    iniCrl.Bounds = new Rectangle(point, iniCrl.Size);
                    counter++;
                }
                this.AutoScroll = true;
            }
            else
            {
                this.AutoScroll = false;
                ResetAllCrlState(this);
            }
        }

        public void ResetAllCrlState(Control CrlContainer)
        { 

            FormSizeChangedX = (double)this.Size.Width / (double)FormSizeWidth;
            FormSizeChangedY = (double)this.Size.Height / (double)FormSizeHeight;
           
            foreach (Control kCrl in CrlContainer.Controls)
            {
                if (kCrl.Controls.Count > 0)
                {
                    ResetAllCrlState(kCrl);
                  
                }
                Point point = new Point();
                point.X = (int)((int)CrlLocationX[Wcounter] * FormSizeChangedX);
                point.Y = (int)((int)CrlLocationY[Wcounter] * FormSizeChangedY);
                kCrl.Width = (int)((int)CrlSizeWidth[Wcounter] * FormSizeChangedX);
                kCrl.Height = (int)((int)CrlSizeHeight[Wcounter] * FormSizeChangedY);
                kCrl.Bounds = new Rectangle(point, kCrl.Size);
                Wcounter++;

            }
        } 
 
0
1
分享到:
评论

相关推荐

    react-component:WP Libre Form的React组件

    该组件将在window.WPLFReactComponent下window.WPLFReactComponent 。 请注意,以这种方式使用它将使每个页面上的响应入队。 用法 像其他任何组件一样。 应该像WPLF在没有React的情况下一样工作。 如果需要访问dom...

    dreamweaver的各种组件

    Check Form 利用Check Form您可以真正检查表单填写的正确性,并且可以自定义报错信息! Animate Images 它可以使用JPG的格式也可以用动态的形式表现出来,并且您可以定义触发动作,获得最大的主动! Add Favourite...

    myeclipse8可视化图形界面插件添加

    但是不是所有版本的myEclipse软件都带有Swing组件可视化图形界面功能的,myeclipse7.0只能使用一次,myeclpse8.0也需要安装插件才可以使用。下面的就介绍一下在myeclipse8.0上安装可视化图形界面的具体步骤。(这是...

    jQuery EasyUI 1.4.5 离线简体中文API文档 含完整开发工具包+皮肤+扩展+演示

    本次更新,我将文档从头到尾和官网发布的最新内容校对了一次,将所有的错误和遗漏的API全部补全和修复了。快半年了,EasyUI又更新了。这次依然以BUG修复和功能改进为主,EasyUI发展至今,主体功能已经基本完善。即便...

    c#控制Visio画图

    c#控制Visio画图 C#进行Visio二次开发 vs2008 visio2007 添加com组件 Microsoft Office Visio 12.0 Drawing Control

    ExtJSWeb应用程序开发指南(第2版)

    6.11.4 停止所有的线程stopAll() 6.12 Ext.util.TextMetrics得到块状化文本规格 6.12.1 块的绑定 6.12.2 实例化对象 6.12.3 获取文本的高度 6.12.4 获取文本的宽、高 6.12.5 获取文本的宽度 6.12.6 获取...

    ExtJS5-一个简洁完整的后台管理系统入门实例

    4、通过实现角色管理、用户管理两个基础的功能模块,演示了Viewport、Container、Panel、TreePanel、Grid、Window、Form等常用组件的用法,以及border、column、form、fit、hbox等常用布局方式; 5、通过自定义一个...

    ReactUI桌面组件ReactDesktop.zip

    React Desktop 是提供给 OS X El Capitan 和 Windows 10 的 React UI 组件。在线演示:http://gabrielbull.github.io/react-desktop/demo/ react-desktop 是基于 Facebook ReactJS 的 JavaScript 库,为 OS X EI ...

    EasyUI tutorial 中文版 chm

    使用easyui创建tabs组件和动态添加 使用easyUI创建一个自动播放的tabs 使用easyUI创建XP风格左侧面板 DataGrid 使用easyUI转换HTML table到datagrid 使用easyUI给datagrid添加pagination 使用easyUI添加...

    基于ExtJS3的后台管理系统模板

    3、通过实现角色管理、用户管理、部门管理三个基础的功能模块,演示了Viewport、Container、Panel、Grid、Window、Form、Tree等常用组件的用法,以及border、column、form、fit、accordion、hbox等常用布局方式;...

    jQuery EasyUI 1.5 离线简体中文API文档 含完整开发工具包+皮肤+扩展+演示

    例行更新,不过本次有新组件加入,感觉这次的组件早就应该有了,居然到现在才加入进来,不管怎么说有总比没有好。这次还是以改进为主,改进项占了大多数。废话不多说具体内容大家看更新说明吧!另外由于经常收到chm...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -这样所有需要占据全屏的Panel(不管你是Accordion,Panel,ContentPanel,Form,GroupPanel,SimpleForm,Tree还是Grid,TabStrip)都可以通过这种方式全屏。 -简单方便,示例可以参考 default.aspx 或者 other\...

    ExtAspNet_v2.3.2_dll

    +为所有Panel(包括Grid,Tree,Form等)增加枚举类型Icon,其中包含1700多个小图标。 -如果Panel具有IconUrl属性,则IconUrl优先于Icon。 -所有Icon的列表在icon.aspx。 -为Button,MenuItem(MenuButton,...

    利用微软com组件mstscax.dll实现window7远程桌面功能

    代码如下:namespace Client{ public partial class Login : Form { private string ip = null;  public Login() { InitializeComponent(); }  public Login(string IP) { InitializeComponent(); ip = IP...

    Omega 0.92 beta FullSource 游戏组件

    //////////Omega ComponentsOmegaScreen - Handles your basic DirectX window stuffOmegaSurface - Handles your extra surfaces / rendering targetsOmegaSound3D – Covers all of your wave, midi and mod ...

    解决JS组件bootstrap table分页实现过程中遇到的问题

    本文为大家分享了bootstrap-table 分页的问题,供大家参考,具体内容如下 问题1 :服务器端取不到form值,querystring没有问题,但是request.form取不到值  解决:这是ajax的问题,原代码...height: $(window).height

    jQuery EasyUI 1.5.1 中文API文档

    form:修复“clear”方法无法清除combobox组件选择的下拉项的问题。 Improvement(改进) textbox:可以用“cls”属性添加自定义样式; numberbox:允许用户使用意大利货币格式; combo:添加“multivalue”属性,...

    H+ 后台主题UI框架v4.1 带文档 未压缩版

    ├── layer.html(web弹层组件layer) ├── layerdate.html(日期选择器layerDate) ├── layerphoto.html(layer相册) ├── layouts.html(布局) ├── lockscreen.html(登录超时) ├── login...

    Web应用前端技术的探索与实践

    6.5.2.22 Window组件 170 6.5.2.22.1 效果 170 6.5.2.22.2 使用说明 172 6.5.2.23 Form数据验证 173 6.5.2.23.1 效果 173 6.5.2.24 内容自动完成、Suggest 174 6.5.2.24.1 效果 175 6.5.2.24.2 应用说明 176 6.5....

    编译的 HTML 帮助文件 (.chm) DHTML手册

    forms 获取以源顺序排列的文档中所有 form 对象的集合。 frames 获取给定文档定义或与给定窗口关联的文档定义的所有 window 对象的集合。 images 获取以源顺序排列的文档中所有 img 对象的集合。 links 获取文档...

Global site tag (gtag.js) - Google Analytics