问题标签 [z-order]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
84754 浏览

c# - 如何使用 WinForms 设置控件的 Z 顺序

我正在编写一个自定义TextBox,在获得焦点后会更改其边框样式。

由于添加边框会导致控件与相邻的控件重叠,因此我暂时将文本框置于对话框的前面(使用textBox.BringToFront())。

但是,一旦编辑完成并且失去焦点,我想将控件发送回其在 Z 顺序中的原始位置。

这可能吗(最好以简单的方式!)

0 投票
1 回答
1636 浏览

silverlight-4.0 - Silverlight 4 应用程序中没有得到 DragEnter/Over、Drop 事件

我将 UserControl 对象从一个 Canvas 拖到另一个 Canvas 的目的是放在那里。将鼠标悬停在目的地上时,拖动的对象实际上在其下方。我没有得到 DragEnter、DragOver 或 DragLeave 事件。如果我将对象放在那里,我不会收到 Drop 事件。

我的根对象是一个边框,然后是一个网格。网格覆盖了整个浏览器客户区。它有 8 列。在每一列中都有一个由 XAML 放置的画布。

奇怪行为的示例:当我将一个项目从第 3 列拖到第 4 列(或任何更大)时,对象在画布下滑动。如果我从第 3 列拖到第 2 列(或更小),对象会滑过顶部。因此,zorder 似乎受到画布创建顺序的影响。有人可以澄清一下吗?

每列中的 Canvas 对象都有关联的 DragEnter/Leave 事件,但无论对象在 Canvas 上方还是下方,它们都不会触发。

我发现 Canvas 必须有背景才能获取鼠标事件。列中的每个画布都有一个背景。如果我不拖动任何东西,鼠标事件就会触发。

我快到我的尽头了,我肯定会很感激一些帮助。

谢谢,格雷格

0 投票
2 回答
8843 浏览

windows - 使用 Win32 API 更新许多 Windows 的 Z 顺序

场景是我有一个顶级窗口的窗口句柄列表,我想移动它们,以便它们按照我选择的 z 顺序排列。我从迭代列表开始(我希望最后的窗口位于顶部),调用SetForegroundWindow每个列表。这似乎在某些时候有效,但并非总是如此,当我在每次通话之间稍作停顿时会有所改善。

有一个更好的方法吗?


编辑:

看起来BeginDeferWindowPos//路线是要走的路DeferWindowPosEndDeferWindowPos但是,我似乎无法一次使用多个窗口。当我将窗口列表限制为单个窗口时,它可以正常工作。当列表有多个窗口时,它似乎只得到其中一个。这是我正在做的伪代码:

我确定这是我在这里遗漏的一些小/明显的东西,但我只是没有看到它。

0 投票
1 回答
1144 浏览

c# - 如何为 WPF UserControl 编写 BringToFront 方法?

我正在开发一个 UserControl,称之为 CoolControl,它的作用有点像一个窗口,具有一些特殊功能。到目前为止,它可以在屏幕上调整大小和拖动。如果我使用 XAML 将多个 CoolControl 对象添加到我的应用程序窗口,最后一个声明的对象总是在前面。这很好,但我想这样做,如果我在运行时单击我的一个 CoolControl 对象,该控件将把自己放在所有其他控件的前面。

我试过使用Canvas.SetZIndex,但除非我无法想出一个足够聪明的解决方案,否则我看不出这对我有什么帮助。因为一旦我将一个控件的 Z-Index 设置为 9999,随着时间的推移,我单击的每个其他控件都将具有相同的值 9999。然后,最后声明的控件再次出现在前面。

如果您的任务是为某人的 UserControl 编写 BringToFront() 方法,您将如何以最简单的方式完成它?我更喜欢一个比获取父窗口更好的解决方案,循环遍历所有控件,找到最大 Z-Index,然后相应地设置 CoolControl 的 Z-Index,如果这甚至是一个有效的解决方案。

0 投票
3 回答
19095 浏览

objective-c - 如何更改精灵的 Z 顺序?

我想设置我在 Objective-C 中创建的精灵的 Z 顺序,特别是在 Cocos2D 中。

这是我在尝试构建以下代码时遇到的错误:

...220: error: object cannot be set - either readonly property or no setter found

Z-Order 必须能够以某种方式设置——它只能在实例化线上设置,而不是在创建之后设置吗?我必须为 CCSprite 的属性创建一个 setter 方法吗?为什么它没有这些方法?

0 投票
1 回答
5495 浏览

c# - BringToFront() 不起作用

我有一个带有启动表单的 winform 项目(如该问题的第一个答案中所述:C# winforms startup (Splash) form not hidden)。

当我使用这个splashform时,主窗体会失去焦点。我想在使用 Form.BringToFront() 关闭启动表单后立即将其带到前面,但它不起作用。

有人可以帮忙吗?

0 投票
2 回答
2580 浏览

wpf - WindowsFormsHost ZOrder

似乎 WindowsFormsHost 控件设置为显示在顶部。有什么方法可以更改其 z 顺序以允许同一窗口上的其他 WPF 控件在 WindowsFormsHost 控件的顶部可见?

0 投票
3 回答
2390 浏览

mfc - win32 CTabctrl:在活动选项卡中绘制“子”窗口

我有一个包含 CTabCtrl 的可调整大小的对话框,该选项卡控件有 4 个选项卡,单击这些选项卡时会显示四个不同的 CTreeCtrls 之一。

我从 CTabCtrl 派生了一个类,它跟踪它的“子”控件,如下所示:

我尝试像这样绘制子控件:

但是,子控件虽然出现,但并不总是正确绘制,它们会将它们的内容混合在一起,并且仅在我单击它们时才显示正确的内容(实际的树控件)。

这是在 zorder 中绘制和移动窗口的最佳方式吗,我错过了什么?

非常感谢

bg

0 投票
1 回答
448 浏览

android - 如何通过正确的视图 z 顺序在 android 中实现这个基本布局

如何在 Android 中实现以下布局?

我想要的是让 3 个蓝色框在他们的视图中顶部对齐,然后我想让红色框在蓝色框下方居中,但是当我为红色框设置动画时,它会滑到下方蓝色盒子。

我尝试将蓝色和红色框放置在不同的布局中,但是一旦我将红色框设置为动画,如果它超出其布局的边界,它就会消失(我不希望红色框的布局剪裁红色盒子,我想让红色盒子滑到蓝色盒子下面,这样蓝色盒子就挡住了红色盒子。)

我还设法使用一系列嵌套布局创建了这个布局,但是由于绘制顺序,红色框总是出现在蓝色框的顶部。我尝试使用 bringToFront() 方法,但我发现这只适用于同一布局中的兄弟视图。不幸的是,我无法在将所有 4 个视图保持在同一布局中的同时获得这种类型的布局。有什么建议么?(另外,如果有人对这个问题的标题有更好的建议,我会全力以赴)

替代文字

0 投票
1 回答
217 浏览

silverlight - 使用列表框中的自定义项目进行 Zordering - Silverlight

我正在制作一个自定义按钮。屏幕截图会有所帮助。如图所示,按钮没有问题,因为徽章挂在左侧。但是,如果我希望徽章挂在右侧,那么列表框中的下一个项目将掩盖超出其容器边界的徽章部分(按钮的宽度)。现在我不能用 zordering 来解决这个问题,对吧?因为这只适用于其容器内的排序,在本例中为 ListBoxItem。这里有什么可以做的吗?仅供参考,我希望避免一种变通方法,例如投入足够大的利润来给徽章空间。我有另一个自定义按钮其文本是可编辑的,并且用于获取输入文本的 TextBox 的扩展将远远超出底层按钮。