如何:控制停靠行为 SendToBack()

来源:互联网 发布:java对象排序 编辑:程序博客网 时间:2024/06/08 08:26

如何:控制停靠行为

.NET Framework 3.5
其他版本
 
  • .NET Framework 3.0
此主题尚未评级- 评价此主题

更新:2007 年 11 月

 

当使用停靠功能时,将控件添加到窗体时所使用的顺序可影响屏幕上控件的布局。如果没有按照正确的顺序添加控件,则这些控件不会总是在屏幕上的预期位置出现。

将控件添加到窗体时所使用的顺序会对 Z 顺序产生影响,当在一个父控件中停靠多个控件时,Z 顺序将决定布局逻辑。第一个添加到父控件中的控件将位于 Z 顺序的底部,而随后添加的控件将按顺序向上叠加。如果试图将两个控件停靠在一个父控件中的同一区域以便将一个控件置于另一个控件旁边,则 Z 顺序中更靠后的控件在得到的布局中靠前。例如,在典型方案中,如果将两个控件的Dock 属性设置为Top,Z 顺序中更靠后的控件将在屏幕上的父控件的顶部出现。

不过,当控件的 Dock 属性设置为Fill 时,此问题可能会导致一个控件遮蔽另一个控件。例如,按照错误顺序添加到窗体的两个控件可能会出现在屏幕的顶部,若只希望将其中一个控件放置在此位置,则一个控件将会遮蔽另一个控件。

如果出现任何布局问题,必须调整受影响的控件的 Z 顺序。修复此问题所需的步骤会因将控件添加到窗体时是否使用了设计器而有所不同。

button1.Dock = SendToBack();将控件button1发送到Z顺序的底部

控制停靠布局

  • 更正将相关控件添加到窗体时所使用的顺序。

    有这样一个示例,其中以编程方式将 TreeView 控件和Button 控件添加到Panel 控件中。TreeView 控件的 Dock 属性设置为Fill,而 Button 控件的Dock 属性设置为TopTreeView 控件会部分遮蔽Button 控件。将TreeViewButton 控件添加到Panel 的代码可能类似于下面这样:

    复制
    this.panel1.Controls.Add(this.button1);this.panel1.Controls.Add(this.treeView1);

    要修复此问题,请更改将这些控件添加到面板中时所使用的顺序。

    复制
    this.panel1.Controls.Add(this.treeView1);this.panel1.Controls.Add(this.button1);

    或者,对其中的一个控件使用 BringToFrontSendToBack 方法。

使用设计器控制停靠布局

  1. 选择一个在窗体上的错误位置出现的控件。

  2. 根据所需布局,右键单击该控件并选择“置于底层”

    - 或 -

    右键单击该控件并选择“置于顶层”

  3. 如果涉及到其他控件,则可以对这些控件重复第 2 步(必要时),直到更正停靠行为。

说明:

如果涉及到多个控件,建议您使用“文档大纲”窗口来控制 Z 顺序。

原创粉丝点击