【发布时间】:2012-12-30 21:54:43
【问题描述】:
我在一个窗体上创建了许多透明控件,每个控件都显示一个十六进制形状,它们被分组为一张地图,这样六边形是边到边的。当然,每个十六进制都包含在一个方形控件中,因此它们与每个相邻的十六进制重叠。我希望能够在十六进制内单击以使其突出显示。但是,除非我在没有重叠的十六进制中间单击,否则根据控件的堆栈顺序,单击事件将被顶部的任何控件拾取,不一定是我想要的控件。所以在我看来,我需要做两件事:
- 我需要确保光标位于六角形内(每个六角形的边缘之间有一个小间隙)。因此,如果我单击控件的某个角,该控件将不会响应该单击,因为它位于十六进制之外。
- 当我单击时,我需要确定哪个控件拥有我正在单击的十六进制。
【问题讨论】:
-
澄清一下,我们说的是 Winforms 还是 WPF?
-
这是一个非常基本的 UI 可用性问题。它的行为就像它应该的那样,最上面的应该得到点击。如果您想允许用户选择另一个,那么您确实需要一个不同的用户界面。也许是一个组合框或箭头按钮来选择一个。
-
@HansPassant:如果它不起作用,这只是一个可用性问题。概念和要求是完全有效的 UI。
-
Winforms,基本上是为了让用户点击一个十六进制来使其成为某种颜色。此外,根据用户的偏好(5x5、10x10 等),地图可以有不同的大小,这就是为什么每个十六进制都在自己的控制之下。
标签: c# controls transparent overlapping