`

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
分享到:
评论

相关推荐

    WindowForm

    在.NET Framework中,WindowForm是System.Windows.Forms命名空间中的一个类,它是Windows应用程序的核心组件,用于创建窗口界面。WindowForm提供了丰富的控件集,如按钮、文本框、复选框、单选按钮等,可以用来构建...

    c#windowform实现treeview多层绑定

    以上就是`c#windowform实现treeview多层绑定`的核心内容。通过这种方式,我们可以方便地将动态生成的多层数据结构绑定到`TreeView`控件上,提高开发效率,同时保持界面的清晰和易用。在`demo`项目中,你应该能找到一...

    .NET windowform 实现excel导入导出加解密

    在.NET框架中,Windows Forms(Windowform)应用常常需要处理Excel数据的导入和导出,以便于数据交换、分析或存储。在这个场景下,实现Excel的加解密功能可以增加数据的安全性,防止未经授权的访问。本文将详细介绍...

    1、EXCEL嵌入FORM窗体-示例这是一个将excel嵌入到form窗体中。很实用.zip

    在IT领域,尤其是在软件开发和数据处理中,有时我们需要将不同的组件集成到一个应用程序中以提高效率和用户体验。"EXCEL嵌入FORM窗体-示例"是一个这样的实践,它展示了如何将Microsoft Excel的工作表嵌入到Windows ...

    在EBS FORM中上传文件

    在Form中,你需要设计一个按钮或组件来触发文件选择对话框。这可以通过调用内置的`SHOW_OPEN_DIALOG`函数实现,让用户选择本地计算机上的文件。同时,为了显示文件信息,可以在Form上添加字段来展示文件名或预览文件...

    Oracle EBS Form 开发帮助文档

    - 在修改Trigger或Property Class时,要确保所有相关组件都相应更新,以保持一致性。 以上就是Oracle EBS Form开发的一些关键步骤和要点,对于初学者来说,理解并熟练运用这些知识是构建高效、稳定EBS Forms的基础...

    在VS2008 WindowForm中如何處理PC自動開關監視器

    本篇文章将详细探讨如何在WindowForm中实现这样的功能,以及提供相关的测试程序及源码。 首先,我们需要了解Windows API函数,这些函数提供了对系统级事件的访问,例如显示器的状态改变。其中,`SystemEvents....

    FORM开发FOLDER参考实例

    这个过程涉及到创建新的Form,添加必要的对象,调整触发器和程序单元,以及集成Oracle标准Form中的组件。以下是对这个实例的详细解释: 1. **新建Form XXPOM400N**: - 在Form Builder中,新建一个名为XXPOM400N的...

    Window From 学生信息管理系统

    Window Form,作为.NET Framework中的用户界面组件,为开发桌面应用程序提供了丰富的功能。它允许开发者创建具有多种控件和交互式的图形用户界面,以满足用户对操作界面直观、易用的需求。在这个学生信息管理系统中...

    新将delphi的form窗口转换为qooxdoo窗体

    1. **解析Delphi Form**:读取Delphi的DFM文件(Delphi Form文件),这个文件包含了Form的所有信息,包括组件类型、位置、大小、属性等。 2. **映射组件**:每个Delphi的组件都需要找到在Qooxdoo中的对应项。例如,...

    C#窗体Form皮肤,用于WindowForm窗体的界面的设置的Dll文件

    1. **皮肤引擎**:这是核心组件,负责处理皮肤的加载、显示和切换。皮肤引擎一般会提供API,开发者可以通过这些API对窗体进行定制,如设置背景图片、边框样式、控件外观等。 2. **资源管理**:皮肤文件通常包含图像...

    FORM 开发中FOLDER(文件夹)的使用

    在 Oracle FormBuilder 中,FOLDER(文件夹)功能是一个非常重要的组件,它能够帮助开发者快速地创建和管理文件夹结构。在这个教程中,我们将详细地介绍 FOLDER 功能的开发和应用。 一、模板制作 在开始之前,我们...

    SAP ABAP ScriptForm 中文版本

    - **NEW-WINDOW**命令用于在表单中打开一个新的主窗口,这对于创建多窗口布局很有帮助。 **2.2.4 给文本symbol分配值:DEFINE** - **DEFINE**命令用于定义文本符号的值,这对于动态填充表单中的文本非常有用。 **...

    Extjs4的FormPanel从后台load json数据的要点

    `Ext.form.Panel`是Extjs4提供的一个用于创建复杂表单的组件。它允许开发者构建包含多个输入字段、按钮以及其他交互元素的表单,并且提供了大量的功能来帮助处理表单数据,如验证、提交以及数据绑定等。 ### 二、...

    使用 ElementUI 组件构建无边框 Window 桌面应用(WinForm/WPF)

    ElementUI 是一个流行的前端 UI 框架,主要用于构建用户界面,它以其简洁的设计和丰富的组件库而受到开发者们的喜爱。通常,ElementUI 被用于 Web 应用的开发,但通过一些技术手段,我们可以将其应用于桌面应用的...

    EXT组件初学者教程 grid+tree+window+描述文档

    - Window经常和其他组件结合使用,如Grid或Form,提供一种模态对话框的用户体验。 4. **SSM框架集成**: - SSM是Java Web开发常用的三层架构,包括Spring负责依赖注入和事务管理,Struts处理请求和视图,MyBatis...

    ExtJs组件类的对应表

    1. **`window`** - `Ext.Window`,窗口组件,用于创建弹出窗口或对话框。 2. **`viewport`** - `Ext.ViewPort`,视口组件,代表浏览器的可视区域,可以响应浏览器的大小变化。 3. **`box`** - `Ext.BoxComponent...

    MyEclipse2014配置WindowBuilder

    然后按照向导步骤进行操作,选择要安装的组件,通常包括WindowBuilder Pro和Swing Designer,最后确认并安装即可。 安装完成后,我们需要重启MyEclipse以使插件生效。接下来,我们可以在创建新项目时选择“Swing ...

Global site tag (gtag.js) - Google Analytics