如下的代码:

button2.Dock = DockStyle.Top;

button1.SendToBack();

button1.Dock = DockStyle.Top;

button3.Dock = DockStyle.Bottom;

运行后,3个button的顺序始终为:

button1

button2

button3

如果代码改为:

button2.Dock = DockStyle.Top;

button1.Dock = DockStyle.Top;

button3.Dock = DockStyle.Bottom;

运行后,3个button的顺序始终为:

button2

button1

button3

如果代码改为:

button1.Dock = DockStyle.Top;
button2.Dock = DockStyle.Bottom;
button3.SendToBack();
button3.Dock = DockStyle.Bottom;

运行后,3个button的顺序始终为:

button1

button2

button3

如果代码改为:

button3.SendToBack();
            button3.Dock = DockStyle.Top;
            button2.SendToBack();
            button2.Dock = DockStyle.Top;
            button1.SendToBack();
            button1.Dock = DockStyle.Top;

运行后,3个button的顺序始终为:

button1

button2

SendToBack() 将控件移到 Z 顺序的后面。

BringToFront()将控件移到 Z 顺序的前面。

 
 
 
Z顺序指的是:在Windows中桌面以及Form都是二维的,也就是X和Y轴,那么Z轴在哪里呢?  其实,Z轴就是垂直于桌面和Form的方向,这个方向上的排列就叫Z顺序。
Windows窗体的Z顺序就是桌面上所有窗口的在Z轴上的排列; 
而控件的Z顺序则是控件所在的父容器上的所有控件的在该父容器得的Z轴上的排列; 
 

.NET中,控件的Dock属性是将控件做X和Y方向上的排列。这个属性设置后,排列的先后顺序,是与控件被加载的顺序有关的 
控件的SendToBack和BringToFront两个方法,就是用来改变Z方向上的排列顺序的,简单说就是控件或者Form在其父容器或桌面上的叠放层次。所以他们不是用来改变在X和Y方向上的排列的。

要想改变那三个Button的前后顺序,可以在解决方案管理器中找到它所在的窗体,然后点击窗体节点前面的+号,将节点展开,然后双击“你的窗体名称.Designer.cs”打开窗体设计文件来修改调整这三个按钮被Controls.Add(...)的先后顺序,即可达到改变Dock上下顺序目的。 

关于sendtoback()和bringtofront() 的理解的更多相关文章

  1. TWinControl的刷新过程(5个非虚函数,4个覆盖函数,1个消息函数,默认没有双缓冲,注意区分是TCustomControl还是Windows原生封装控件,执行流程不一样)

    前提条件:要明白在TWinControl有以下四个函数的存在,注意都是虚函数: procedure Invalidate; override;procedure Update; override;pr ...

  2. APICloud上openFrameGroup把菜单挡住了,怎么处理?

    问:openFrameGroup把菜单挡住了,怎么处理? 试了sendFrameToBack没反应,又不能页面自己openFrameGroup,不知道该怎么办.而且用另外的页面先openFrameGr ...

  3. TControl的显示函数(5个非虚函数,4个虚函数)和三个例子的执行过程(包括SetParent的例子)

    // 9个显示函数 procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual; // 虚函数,important 根据父控 ...

  4. excel2007VBA绘图2

    '--------------------------------------------------------Module1------------------------------------ ...

  5. Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它

    Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它 TFmxObject 增加了 TagObject.TagFloat.TagString, 算 ...

  6. cocos2d-x-3.x bringToFront & sendToBack实现

    void Node::bringToFront(void) { auto parent = this->getParent(); if (parent != nullptr && ...

  7. 理解CSS视觉格式化

    前面的话   CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...

  8. 彻底理解AC多模式匹配算法

    (本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...

  9. 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信

    接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...

随机推荐

  1. java collection.frequency方法

    collection.frequency方法,可以统计出某个对象在collection中出现的次数 比如: frequency(Collection<?> c, Object o)     ...

  2. nginx如何启用对HTTP2的支持 | nginx如何验证HTTP2是否已启用

    nginx启用HTTP2特性 查看当前nginx的编译选项 1 #./nginx -V 2   3 nginx version: nginx/1.9.15 4 built by gcc 5.4.0 2 ...

  3. SharePoint Set-SPUser 命令拒绝访问

    · 前言 最近碰到一个问题,由于User Profile Service服务有问题,用户信息无法更新.所以,想到Set-SPUser命令可以更新,于是乎找到这个命令,但是更新的时候发现拒绝访问的错误. ...

  4. 美国谍梦第一季/全集The Americans迅雷下载

    美国谍梦 第一季 The Americans Season 1 (2013)本季看点:这部背景设在80年代的剧集,故事讲述了一对被组织安排在美国生活的克格勃特工夫妻Phillip和Elizabeth, ...

  5. Android之找回打包key密码的方法

    昨天准备给自己的应用发布一个新版本,在apk打包时,发现之前的用的keystore密码忘了.蛋碎了一地,我把我所能想到的密码都试了一遍(注:我平常在各个门户网站注册基本上用的都是那几个字母和数字组合做 ...

  6. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  7. [转]MySql ibdata1文件太大如何缩小

    From : http://blog.chinaunix.net/uid-24373487-id-4223322.html 原文地址:MySql ibdata1文件太大如何缩小 作者:emailwht ...

  8. 安装chrome

    安装chrome 在suse12中安装chrome时,提示 lsb >= 4.0 is needed by google-chrome-stable 到http://rpm.pbone.net当 ...

  9. Python二维数组构造

    周末用python要写个算法用到来二维数组, 一时间还不知道python怎么构造多维数组出来.看到一段不错的代码, 记录一下. Python使用list嵌套实现多维数组, PHP可以使用array嵌套 ...

  10. 8Manage PMP 项目管理工具

    范围与需求管理 8Manage 项目管理平台提供先进的机制集中管理项目的范围与需求: 提供需求申请功能:获取,过滤,解析和明确项目的需求 提供需求矩阵功能:整理分析需求并跟踪需求从开始到完成的整个过程 ...