精华内容
下载资源
问答
  • 仿C#的TableLayoutPanel封装的MFC布局管理类,方便MFC界面控件布局,刚学MFC时做的,不是很全,只可以作为参考
  • 本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking"。 布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该...

    本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking"。

    布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大、美观、不亚于商业控件。而且控件使用也是比较简单的。先看看控件使用的程序界面展示效果。

    配电网络可视化管理系统的界面截图:

    深田之星送水管理系统网络版的界面截图:

    我在几个共享软件都使用了该布局控件,我们先以“深田之星送水管理系统网络版”这款软件为例,介绍如何完成该界面的设计及显示的。

    1、首先,我们添加一个主界面窗体,命名为MainForm,该窗体IsMdiContainer设置为True,也就是设置为多文档窗体格式。拖拉布局控件"WeifenLuo.WinFormsUI.Docking.DockPanel"到主窗体MainForm中,并设置下面几个属性:

    Dock为Fill、DocumentStyle为DockingMdi、RightToLeftLayout为True。

    这几个属性的意思应该不难,Dock就是 覆盖整个MDI窗体的区域,DocumentStyle为多文档类型、RightToLeftLayout是指新打开的窗口都停靠在右边区域。

    我们看看设计界面视图如下所示。

    2、主界面其实基本上就可以了,另外我们看到“送水管理系统网络版”的界面中有一个左边的工具栏,它其实也是在一个停靠的窗体中的,我们增加一个窗体用来承载相关的工具快捷键按钮展示。命名为MainToolWindow的窗体,继承自WeifenLuo.WinFormsUI.Docking.DockContent.

    其中的“HideOnClose”属性很重要,该属性一般设置为True,就是指你关闭窗口时,窗体只是隐藏而不是真的关闭。

    左边的窗口MainToolWindow实现停靠的代码是在MainForm的构造函数或者Load函数中加载即可。

    mainToolWin.Show(this.dockPanel, DockState.DockLeft);

     3、对于工具窗口我们已经完成了,但是主业务窗口还没有做,也就是下面的部分内容。

    为了方便,我们定义一个基类窗体,命名为BaseForm,继承自DockContent,如下所示

    public class BaseForm : DockContent

    然后每个业务窗口继承BaseForm即可。

    4、剩下的内容就是如何在主窗体MainForm中展示相关的业务窗口了,展示的代码如下所示

    复制代码

        public partial class MainForm : Form
        {
            #region 属性字段

             private MainToolWindow mainToolWin = new MainToolWindow();
            private FrmProduct frmProduct = new FrmProduct();
            private FrmCustomer frmCustomer = new FrmCustomer();
            private FrmOrder frmOrder = new FrmOrder();
            private FrmStock frmStock = new FrmStock();
            private FrmComingCall frmComingCall = new FrmComingCall();
            private FrmDeliving frmDeliving = new FrmDeliving();
            private FrmTicketHistory frmHistory = new FrmTicketHistory(); 

            #endregion

            public MainForm()
            {
                InitializeComponent();

                SplashScreen.Splasher.Status = "正在展示相关的内容";
                System.Threading.Thread.Sleep(100);

                mainToolWin.Show(this.dockPanel, DockState.DockLeft);
                frmComingCall.Show(this.dockPanel);
                frmDeliving.Show(this.dockPanel);
                frmHistory.Show(this.dockPanel);
                frmStock.Show(this.dockPanel);
                frmProduct.Show(this.dockPanel);
                frmCustomer.Show(this.dockPanel);
                frmOrder.Show(this.dockPanel);

                SplashScreen.Splasher.Status = "初始化完毕";
                System.Threading.Thread.Sleep(50);

                SplashScreen.Splasher.Close();
            }

    复制代码

     

    5.下面贴出基本窗口的基本操作事件函数

    复制代码

            private void menu_Window_CloseAll_Click(object sender, EventArgs e)
            {
                CloseAllDocuments();
            }

            private void menu_Window_CloseOther_Click(object sender, EventArgs e)
            {
                if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
                {
                    Form activeMdi = ActiveMdiChild;
                    foreach (Form form in MdiChildren)
                    {
                        if (form != activeMdi)
                        {
                            form.Close();
                        }
                    }
                }
                else
                {
                    foreach (IDockContent document in dockPanel.DocumentsToArray())
                    {
                        if (!document.DockHandler.IsActivated)
                        {
                            document.DockHandler.Close();
                        }
                    }
                }
            }

            private DockContent FindDocument(string text)
            {
                if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
                {
                    foreach (Form form in MdiChildren)
                    {
                        if (form.Text == text)
                        {
                            return form as DockContent;
                        }
                    }

                    return null;
                }
                else
                {
                    foreach (DockContent content in dockPanel.Documents)
                    {
                        if (content.DockHandler.TabText == text)
                        {
                            return content;
                        }
                    }

                    return null;
                }
            }

            public DockContent ShowContent(string caption, Type formType)
            {
                DockContent frm = FindDocument(caption);
                if (frm == null)
                {
                    frm = ChildWinManagement.LoadMdiForm(Portal.gc.MainDialog, formType) as DockContent;
                }

                frm.Show(this.dockPanel);
                frm.BringToFront();
                return frm;
            }

            public void CloseAllDocuments()
            {
                if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)
                {
                    foreach (Form form in MdiChildren)
                    {
                        form.Close();
                    }
                }
                else
                {
                    IDockContent[] documents = dockPanel.DocumentsToArray();
                    foreach (IDockContent content in documents)
                    {
                        content.DockHandler.Close();
                    }
                }
            } 

    复制代码

     

     

     

    1.多文档界面(MDI)

    DockPanel Suite的主窗体类似于WinForm中开发MDI应用程序的父窗体,父窗体容纳了所有的停靠窗体,停靠窗体类似于MDI中的子窗体。

    image

    红色区域是一个Panel,继承于WeifenLuo.WinFormsUI.Docking.DockPanel,所有的子窗体必须停靠、悬浮、隐藏在该Panel中。因为是基于MDI的应用,所以父窗体属性IsMdiContainer必须设置为true。另外,子窗体都继承于WeifenLuo.WinFormsUI.Docking.DockContent,这样才能停靠在父窗体中。

    2.DockState

    DockPanel Suite中的DockSate是一个非常重要的属性:

    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

    public enum DockState

        {

            Unknown = 0,

            /// <summary>

            /// 悬浮

            /// </summary>

            Float = 1,

            /// <summary>

            /// 顶部窗体自动隐藏

            /// </summary>

            DockTopAutoHide = 2,

            /// <summary>

            /// 左停靠窗体自动隐藏

            /// </summary>

            DockLeftAutoHide = 3,

            /// <summary>

            /// 底部停靠窗体自动隐藏

            /// </summary>

            DockBottomAutoHide = 4,

            /// <summary>

            /// 右停靠窗体自动隐藏

            /// </summary>

            DockRightAutoHide = 5,

            /// <summary>

            /// 停靠窗体文档对象

            /// </summary>

            Document = 6,

            /// <summary>

            /// 顶部停靠

            /// </summary>

            DockTop = 7,

            /// <summary>

            /// 左停靠

            /// </summary>

            DockLeft = 8,

            /// <summary>

            /// 底部停靠

            /// </summary>

            DockBottom = 9,

            /// <summary>

            /// 右停靠

            /// </summary>

            DockRight = 10,

            Hidden = 11

        }

    代码中的注释表示的是子窗体停靠父窗体的位置。在继承于DockContent的子窗体中有一个属性ShowHint可以初始化子窗体在显示的时候停靠的方位。

    测试效果如下:

    image

    DockPanel Suite中提供了一个相应的DockStateChanged来监测子窗体的DockState变化。

    3.DockPane及DockAlignment

    停靠窗体也可以选择停靠面板(DockPane)来停靠,停靠面板是一个停靠窗体中内置的面板(pane),该面板是一个UserControl,方法如下:

    1

    public void Show(DockPane previousPane, DockAlignment alignment, double proportion)

    其中参数DockAlignment枚举如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    public enum DockAlignment

        {

            /// <summary>

            /// 相对于停靠面板左

            /// </summary>

            Left,

            /// <summary>

            /// 相对于停靠面板右

            /// </summary>

            Right,

            /// <summary>

            /// 相对于停靠面板顶部

            /// </summary>

            Top,

            /// <summary>

            /// 相对于停靠面板底部

            /// </summary>

            Bottom

        }

    参数proportion指的是相对停靠面板的占据位置的百分比:

    image

    图中红色区域为Form0内置面板区域,该区域下方距离停靠面板百分比为0.4。

    4.DockArea

    停靠窗体存在一个停靠区域,其属性为DockArea,与DockState比较相似,为枚举类型:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    [Flags]

        [Serializable]

        [Editor(typeof(DockAreasEditor), typeof(System.Drawing.Design.UITypeEditor))]

        public enum DockAreas

        {

            Float = 1,

            DockLeft = 2,

            DockRight = 4,

            DockTop = 8,

            DockBottom = 16,

            Document = 32

        }

    通常在停靠窗体初始化时可以设置其停靠区域,限制其拖动的区域位置。需要注意的是当DockState为DockLeft |DockRight |DockTop |DockBottom |Float |Document 时,对其相应DockAreas设置的DockLeft |DockRight |DockTop |DockBottom |Float |Document 无效。例如,当DockState为DockRight 时,对DockAreas设置区域DockRight 无效,会抛出异常,在我的测试代码中作了一个扩展,来避免不必要的异常(异常信息为:Invalid Value: The value of DockAreas conflicts with current DockState):

    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

    public static bool IsDockAreaValid(this DockContent dock,DockAreas areas)

           {

               bool valid = true;

               switch (areas)

               {

                   case DockAreas.DockBottom:

                       valid=(dock.DockState!=DockState.DockBottom);

                       break;

                   case DockAreas.DockLeft:

                        valid=(dock.DockState!=DockState.DockLeft);

                       break;

                   case DockAreas.DockRight:

                       valid = (dock.DockState != DockState.DockRight);

                       break;

                   case DockAreas.DockTop:

                       valid = (dock.DockState != DockState.DockTop);

                       break;

                   case DockAreas.Document:

                       valid = (dock.DockState != DockState.Document);

                       break;

                   case DockAreas.Float:

                       valid = (dock.DockState != DockState.Float);

                       break;

                   default:

                       break;

               }

               return valid;

           }

    5.DocumentStyle

    可以设置DockPanel容器DocumentStyle来改变停靠窗体的风格,DocumentStyle枚举类型如下:

    1

    2

    3

    4

    5

    6

    7

    public enum DocumentStyle

        {

            DockingMdi,

            DockingWindow,

            DockingSdi,

            SystemMdi,

        }

    默认值为DockingMdi,个人觉得这几种窗体风格的样式相差无几。

    6.其他

    在DockPanel Suite源代码自带的实例中,还有一些常用功能如下:

    • 关闭激活的停靠窗体、关闭所有停靠窗体
    • 停靠状体的布局保存与加载(代码与XML两种方式);可以事先使用代码构建整个应用程序的界面布局,然后在应用程序退出的时将布局保存到xml,以后就以该xml作为标准的
      界面布局文件
    • 停靠窗体换肤
    • 补充一点,关于DockState为非Document的停靠窗体如果需要设置其右键快捷菜单的话可以设置DockContent类中属性TabPageContextMenuStrip为其自己定义的ContextMenu,

    效果如下: image

    展开全文
  • winform布局控件

    2020-11-10 21:05:08
    // 设计界面,将控件水平或垂直居中 - 选中控件 - 菜单,格式,窗体内居中,水平对齐 // 调整控件z序 - 选中控件 - 右键,“置于顶层”、“置于底层” 2. 图标查找 icons8客户端 支持png、ico、xaml等图标搜索 ...

    1. Visual Studio设计界面

    • 设计界面,将控件水平或垂直居中
    - 选中控件
    - 菜单,格式,窗体内居中,水平对齐
    
    • 调整控件z序
    - 选中控件
    - 右键,“置于顶层”、“置于底层”
    

    2. 图标查找

    icons8客户端

    • 支持png、ico、xaml等图标搜索
    • 支持修改图标大小、颜色
    • 无需登录,可以像拖动文件一样拖动图标

    3. 布局

    • 整体界面采用Panel+Dock进行分块布局
    // 标题栏
    panel1.Dock=Top
    // 左侧工具栏栏
    panel2.Dock=Left
    // 主内容区
    panel3.Dock=Fill
    
    • 控件保持水平、垂直居中
    panel1.Anchor=None
    

    4. 配色

    • 前景色:白色
    • 背景色可选:Crimson 深红、SeaGreen 海绿色、RoyalBlue 宝蓝色

    5. 自定义窗体

    // 无边框
    FormBorderStyle=None
    // 缩放模式
    AutoScaleMode=None
    // 字体、前景色、背景色
    Font、ForeColor、BackColor
    

    6. 自定义边框

    // 4个panel,Dock属性分别为左、上、右、下
    // panel背景色为边框色
    panel1.Dock=Left
    panel1.Widht=5
    panel2...
    panel3...
    panel4...
    

    7. 图片+文字按钮

    // 扁平样式
    button1.FlatStyle=Flat
    // 去除边框
    button1.FlatAppearance.BorderSize=0
    // 文字颜色
    button1.ForeColor=White
    // 背景色
    button1.BackColor=RoyalBlue
    // 图片
    button1.Image=xxx.png
    // 图片放在文字前面
    button1.TextImageRelation=ImageBeforeText
    

    8. 图片按钮

    “图片+文字按钮”的基础上去除文字内容

    9. 圆点样式密码框

    textBox1.UseSystemPasswordChar=true
    
    展开全文
  • WinForm布局控件分层

    千次阅读 2019-05-20 13:30:29
    Winform布局时Dock是最常用的设置,尤其是对于需要拉伸的区域要设为Fill,有时会遇到同级控件设为相同的Dock属性值时,布局先后的问题。 比如,左边LeftPanel是用于主数据成图显示的区域,要支持拉伸,设为了...

    1、 问题描述

        Winform中布局时Dock是最常用的设置,尤其是对于需要拉伸的区域要设为Fill,有时会遇到同级控件设为相同的Dock属性值时,布局先后的问题。

        比如,左边LeftPanel是用于主数据成图显示的区域,要支持拉伸,设为了Fill,右边是可选拉伸的视图区域RightPanel,设为了Right,现在要用Spliter用于分割和调整两个Panel的区域,按理应当位于二者之间,而且应当设置其Dock为Right,以保证主视图的正常缩放,而Splliter和RightPanel都设为Right停靠时,谁在前,谁在后呢?

    2、理论说明

         显然,我们希望右停靠的时候,先让RightPanel停靠在最右边,然后再让Spliter向右停靠在RightPanel的左侧,于是,这里就涉及到一个控件的层级关系问题:

        越底层的控件会优先布局,上层的控件需要在底层控件布局的基础上再进行布局!

    3、解决方案

        因此,要达到题目要求的效果,就要将RightPanel置于Spliter的底层,具体的层级关系可以通过"视图》其他窗口》文档大纲"进行查看,越底层的越先布局,所以,布局顺序需要从下往上看。

        我们能够看到,panel2在splitter1的更底层,所以panel2先于splitter1布局停靠在最右侧,而panel3在splitter2的更底层,所以panel3先于splitter2布局停靠在最下侧,利用这种层级关系,我们可以调整完成各种常见的布局效果,尤其是在面对控件缩放问题时。

    展开全文
  • WinForm页面布局 控件

    2012-10-28 18:04:47
    留着以后自己用,如果大家发现不好用的地方 记得留言
  • 最新的DockPanel组件,仿Visual Studio风格,支持多种主题切换,VS2003 、2005、2012、/2013/2015等多套主题风格
  • WeifenLuo.WinFormsUI.Docking是WinForm的一种开源界面布局控件简单易用, 用过的人都深有体会,该控件之强大、美观、不亚于商业控件。而且控件使用也是比较简单的。先看看控件使用的程序界面展示效果。
  • windows窗体应用程序的控件都派生自Control类,并继承了许多通用成员,下面介绍Control类的一些基本特征,了解这些能够大致知道控件是如何实现在窗体中布局的。 Achor 指示在控件的容器被调整时,控件紧贴着哪个...

    windows窗体应用程序的控件都派生自Control类,并继承了许多通用成员,下面介绍Control类的一些基本特征,了解这些能够大致知道控件是如何实现在窗体中布局的。

    Achor 指示在控件的容器被调整时,控件紧贴着哪个方向的边沿,例如在一个窗口中放置一个按钮,并将按钮的Anchor属性设置为Right+Bottom,当用户调整窗口的大小时,按钮将保持与窗口的底部和右边沿的距离不变
    ForeColor、BackColor ForeColor属性表示前景色,即控件上呈现的文本的颜色;BackColor属性表示控件的背景色
    Dock 指示控件如何填充容器中的可用空间,如果设置为FILL则表示控件将占满所有的可用空间;如果设置为TOP,则表示控件将占用容器上方的所有空间
    Location与Left、Top 表示控件在容器中的位置、如果控件是窗口,那么它的位置就相当于桌面坐标(屏幕坐标)。由于Location属性是Point结构,是值类型,因此不应该直接修改其X和Y的值,而是向Location属性赋予一个新的Point实例;叶可以直接设置Left(x坐标)属性和Top(y坐标)属性的值来调整控件的位置,例:Point p2 = new Point(20, 30); pictureBox1.Location = p2
    Size和Width、Height 表示控件的大小,由高度和宽度两个值决定。Size类型是Size结构,是值类型,不能直接修改,必须将一个新的Size实例赋值给Size属性,或者直接修改控件的Width和Height属性,例如:控件名.Size=new Size(高度,宽度)

    调整控件的Z顺序
    当窗口或容器控件中的控件在布局过程中发生重叠的时候,会出现层次性。Z顺序较大的控件会遮挡Z顺序较小的控件,即放在顶层的控件会挡住放在底层的控件。
    1.设计人员可以在设计阶段通过窗体设计器来调整控件的Z顺序,右击—【置于顶层】/【置于底层】。
    2.可以在运行阶段动态改变控件的Z顺序。操作方式是左击时增加控件的Z顺序,右击时减少控件的Z顺序。同时,为了让读者可以清晰的观察到控件的布局变化,可以分别处理他们的Point事件(Control.Point控件重绘)。
    可以试试下面这段代码,分别增加label1,label2,label3.体会它的变化

            public Form1()
            {
                InitializeComponent();
                label1.Paint += label1_Paint;
                label2.Paint += label2_Paint;
                label3.Paint += label3_Paint;
                label1.MouseClick += OnLabelMouseClick;
                label2.MouseClick += OnLabelMouseClick;
                label3.MouseClick += OnLabelMouseClick;
            }
            private void OnLabelMouseClick(object sender, MouseEventArgs e)//此为共享事件处理程序
            {
                Control c = sender as Control;
                if(e.Button==System.Windows.Forms.MouseButtons.Left)
                {
                    c.BringToFront();//增加Z顺序
                }
                if (e.Button == System.Windows.Forms.MouseButtons.Right)
                {
                    c.SendToBack();//减少Z顺序
                }
            }
    
            private void label3_Paint(object sender, PaintEventArgs e)
            {
                Label lb = sender as Label;//是事件源,表示触发事件的那个组件
                Pen pen = new Pen(Color.Blue, 15f);//用于绘制边框的笔
                e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, lb.Width, lb.Height));
                pen.Dispose();//释放Pen对象
            }
    
            private void label2_Paint(object sender, PaintEventArgs e)
            {
                Label lb = sender as Label;//是事件源,表示触发事件的那个组件
                Pen pen = new Pen(Color.Red, 15f);//用于绘制边框的笔
                e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, lb.Width, lb.Height));
                pen.Dispose();//释放Pen对象
            }
    
            private void label1_Paint(object sender, PaintEventArgs e)
            {
                Label lb = sender as Label;//是事件源,表示触发事件的那个组件
                Pen pen = new Pen(Color.Yellow, 15f);//用于绘制边框的笔
                e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, lb.Width, lb.Height));
                pen.Dispose();//释放Pen对象
            }
    

    在这里插入图片描述

    控件的Anchor属性、Dock属性--影响布局

    在设计窗体时,这两个属性特别有用,如果用户认为改变窗口的大小并不容易,应确保窗口看起来显示的不是那么乱,并编写很多代码来实现这个效果,许多程序解决这个问题都是禁止给窗口重新设置大小
    这显然是解决问题的最简单的方法,但不是最好的方法,因此引入了Anchor和Dock属性。

    1、Anchor属性用于指定在用户重新设置窗口的大小时控件应该如何响应,可以指定如果控件重新设置了大小,就根据控件的边界去锁定它,或者其大小不变,但根据窗口的边界来锚定它的位置

     

            正如名称暗示的那样,这个属性迫使控件将其自身定位在父窗体或父控件中某个相对或绝对位置,这个属性有四个可以开启或关闭的值
                * Top--表示控件中与父窗体(父控件)相关的顶部应该保持固定
                * Bottom--表示控件中与父窗体(父控件)相关的底部应该保持固定
                * Left--表示控件中与父窗体(父控件)相关的左边缘应该保持固定
                * Right--表示控件中与父窗体(父控件)相关的右边缘应该保持固定
            正如演示的那样,每个控件在父窗体上都自动的保持它的位置,需要注意的是:
                ①如果没有指定一个控件有左右锚定,它将在父窗体中保留一个相对左右的位置,其它也是一样
                ②如果选择了所有Anchor值的控件,控件只是在调整父窗体大小时,随着增大和缩小--与窗体的边缘比较起来它的所有边缘保持静止不变。
            

    2、Dock属性用于指定控件应该停放在窗口的边框上,用户重新设置了窗口的大小,这个控件将继续停放在窗口的边框上,例如,如果指定控件停留在窗口的底部边界上,则无论窗口的大小怎么改变,这个控件都将改变大小,或移动其位置,确保总是位于屏幕的底部。

     

            Dock属性迫使控件紧贴父窗体的某个边缘。虽然Anchor属性也可以实现这一点,但是Dock属性使得能够在父窗体中让子窗体可以再上方(或旁边)互相堆叠,如果某个子窗体改变了大小,其它停驻在它旁边的子窗体也会随之改变。和Anchor属性不同的是,可以将Dock属性设置为一个单值:
                *Top--迫使控件位于父窗体(或控件)的顶部,如果有同一个父窗体的其它子控件也被设置为停驻在顶部的话,那么控件将在彼此上方互相堆叠
                * Bottom--迫使控件位于父窗体(或控件)的底部,如果有同一个父窗体的其它子控件也被设置为停驻在底部的话,那么控件将在彼此上方互相堆叠
                * Left--迫使控件位于父窗体(或控件)的左边,如果有同一个父窗体的其它子控件也被设置为停驻在左边的话,那么控件将在彼此旁边互相堆叠
                * Right--迫使控件位于父窗体(或控件)的右边,如果有同一个父窗体的其它子控件也被设置为停驻在右边的话,那么控件将在彼此旁边互相堆叠
                * Fill--迫使控件位于父窗体(或控件)的上方,如果有同一个父窗体的其它子控件也被设置为停驻在上方的话,那么控件将在彼此上方互相堆叠
                * None--表示控件将会正常运转
            需要注意的是:对于Dock属性,添加控件的顺序会影响它们停驻的方式。

    窗体控件 布局 属性

     

    布局

    AutoScaleMode:当屏幕分辨率或字体发生改变时,窗体和控件是如何发生变化的。
    - None : 禁用自动缩放。(默认时)
    - Font :根据类使用的字体(通常为系统字体)的维度控制缩放。如果希望控件或窗体根据操作系统中字体的大小进行拉伸或缩小,则按 Font 缩放十分有用,如果控件或窗体的绝对大小无关紧要,则应使用这种方式进行缩放。比如:一个按钮的文字,改变了系统的字体大小,按钮也随着变大到能完整显示文字。例子:新建一个winform,字体为 ‘宋体 9pt’,上面还有一个button,用来参考,然后,先改变winform的字体大小,就改为‘宋体 16pt’吧。这时候,连按钮都变大了。
    - Dpi : 根据显示分辨率控制缩放。常用分辨率为 96 和 120 DPI。如果要相对于屏幕确定控件或窗体的大小,则按 Dpi 缩放十分有用。例如,对于显示图表或其他图形的控件,可能希望使用每英寸点数 (DPI) 缩放,以便该控件始终占据一定百分比的屏幕
    - Inherit : 根据类的父类的缩放模式控制缩放。如果不存在父类,则禁用自动缩放。
    AutoScroll:只是当控件内容大于它的可见区域时是否自动显示滚动条。
    - TRUE—是
    - FALSE—否
    AutoSize:指定控件是否自动调整自身的大小以适应其内容的大小。
    - TRUE—是
    - FALSE—否
    AutoSizeMode:指定用户界面元素自动调整自身大小的模式。
    - GrowOnly—生成的窗体可以用鼠标调节大小
    - GrowAndShrik—生成的窗体不可以用鼠标调节大小
    Anchor:定义某个控件绑定到的容器的边缘,当控件锚定到某个边缘时,与指定边缘最接近的控件边缘与指定边缘之间的距离将保持不变。
    -Top——表示控件中与父窗体(或父控件)相关的顶部应该保持固定(Anchor相当于是将控件钉在了父控件上,不管父控件怎么放大缩小,它与父控件边缘距离都将保持绝度距离不变)
    - Bottom——表示控件中与父窗体(或父控件)相关的底边应该保持固定
    - Left——表示控件中与父窗体(或父控件)相关的左边缘应该保持固定
    - Right——表示控件中与父窗体(或父控件)相关的右边缘应该保持固定
    - None——漂浮
    Dock:用于指定控件应停放在窗口的边框上,用户重新设置了窗口的大小,这个控件将继续停放在窗口的边框上,例如,如果指定控件停放在窗口的底部边界上,则无论窗口的大小改变,这个控件都将改变大小,或移动其位置,确保总是位于屏幕的底部。虽然Anchor属性也可以实现这一点,但是dock属性使得你能够在父窗体中让子窗体可以在上方(或旁边)互相“堆叠”。
    - Top——迫使控件位于父窗体(或控件)的顶部。如果有同一个父窗体的其它子控件也被设置为停驻在顶部的话,那么控件将在彼此上方相互堆叠。
    - Bottom——迫使控件位于父窗体(或控件)的底部。如果有同一个父窗体的其它子控件也被设置为停驻在底部的话,那么控件将在彼此上方相互堆叠。
    - Left——迫使控件位于父窗体(或控件)的左边。如果有同一个父窗体的其它子控件也被设置为停驻在左边的话,那么控件将在彼此旁边相互堆叠。
    - Right——迫使控件位于父窗体(或控件)的右边。如果有同一个父窗体的其它子控件也被设置为停驻在右边的话,那么控件将在彼此旁边相互堆叠。
    - Fill——迫使控件位于父窗体(或控件)的上方。如果有同一个父窗体的其它子控件也被设置为停驻在上方的话,那么控件将在彼此上方相互堆叠。
    - None——表示控件将会正常运转。

    窗口样式

    MaximizeBox:确定窗体标题栏的右上角是否有最大化框。
    - TRUE—是
    - FALSE—否

     

     

     

    展开全文
  • 1、采用流布局:工具箱...你可以把这个控件Panel加进你的FORM,再在这个布局控件上面添加你的控件。这样,不管你的窗体初始大小是多大都可以使你的窗体在最大化的时候,或者改变窗体大小的时候,里边的控件也随着...
  • 但在更换的过程中碰到一个问题,用户控件拖得窗体中,控件中的布局还是理想中的布局格式,但一编译,糟了,控件中的布局乱了,有的子元素都不知道跑到哪里去了。通过一步步的排查,终于找到了问题所在。问题出在控件...
  • 1.DataGridView控件 显示数据表 (1)后台数据绑定: List<xxx> list = new List<xxx>(); dataGridView1.DataSource = list; //设置不自动生成列,此属性在属性面板中没有 dataGridView1....
  • 界面布局控件-WeifenLuo.WinFormsUI.Docking http://www.cnblogs.com/lppcoding/archive/2010/11/30/1891804.html 转载于:https://www.cnblogs.com/leeboy/p/3688575.html
  • WinForm 常用控件

    2021-01-23 15:21:17
    1.按钮控件【Button】 1.1 属性(F4) ...BackgroundImageLayout:背景图片布局      Zoom:居中      Stretch:全填充 ContextMenuStrip:右键菜单 &
  • WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"WeifenLuo.WinFormsUI.Docking",发现的确是一个非常棒的开源控件,用过的人都深有体会,...
  • winform容器控件

    2017-04-27 16:06:00
     两个比较重要的布局属性: Anchor:填充布局 Dock:锁定布局(一般与容器控件配合使用)  Panel:类似于DIV,里面可以放任何控件,可以独立布局,还可以让其它控件及容器在它的内部再次布局  FlowLayoutPanel...
  • winform 容器控件

    2017-05-03 15:24:00
    Anchor:填充布局 Dock:锁定布局(一般与容器控件配合使用)  Panel:类似于DIV,里面可以放任何控件,可以独立布局,还可以让其它控件及容器在它的内部再次布局  FlowLayoutPanel:相比Panel,此控件额外...
  • WinForm 容器控件

    2016-09-23 11:41:00
    Panel:就是一个区域,类似于DIV,可以独立布局,还可以让其它控件及容器在它的内部再次布局 FlowLayoutPanel:流式布局容器,内容会默认从左向右排列,如果宽度不够了,那么自动换行 GroupBox:依然是容器,拥有...
  • 容器控件: 容器控件1:面板Panel 属性: AutoScroll属性,设置面板滚动条是否可用,默认情况下是禁用false BorderStyle属性,设置面板边框风格,有None(默认),FixedSingle,...容器控件3:表格布局控件TableLayou
  • windows窗体应用程序的控件都派生自Control类,并继承了许多通用成员,下面介绍Control类的一些基本特征,了解这些能够大致知道控件是如何实现在窗体中布局的。 Achor 指示在控件的容器被调整时,控件紧贴着哪个...
  • WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。 1. DockPanel的一点点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 697
精华内容 278
关键字:

winform布局控件