【问题标题】:Overlapping Panels in C#C# 中的重叠面板
【发布时间】:2010-11-16 02:12:10
【问题描述】:

我在 c# 中使用 GUI 表单生成器。我有一个 TransparencyKey 集,整个表单的背景颜色设置为该 Transparency 键,因此表单的背景似乎不可见。我还有一个登录面板,它首先出现,用户登录后它消失,其他面板变得可见。这一切都有效,除非我尝试重叠任何面板。发送到后面或带到前面没有区别。如果即使其中一个面板重叠一点,那么两个重叠的面板都会消失?有什么问题?

干杯 授予

【问题讨论】:

  • 我建议您发布最短的可能导致问题的示例代码,这将导致更多的响应机会...

标签: c# visual-studio user-interface transparency panel


【解决方案1】:

如果这是 WinForms,则根本没有 Z-Order 的概念。每个面板都会要求父窗体绘制它的背景。出于这个原因,WinForms 透明度很少像您期望的那样工作。

话虽如此,但如果有任何重叠,我不明白为什么面板会完全消失。我过去曾实施过这种类型的事情,但从未见过这种行为。你能在一个非常小的示例项目中重新创建它并发布代码吗?

【讨论】:

  • 我明白你对 z 顺序的意思。真的没有必要给你看代码。如果您要简单地创建一个带有透明度键(并将背景颜色设置为该透明度键)的表单。如果您尝试将任何面板放在上面,它就会消失。我什至连键都没有。我不明白。我最终做的是编写在运行时创建面板的代码,并根据表单当前所在的位置定位它。出于某种原因,这行得通,但用 gui 编辑器创建它们却不行。感谢您尝试提供帮助。格兰特-
【解决方案2】:

不确定我所说的是否适用于你正在做的事情。今天我试图用我的窗口形式的面板做类似的事情。我有两个面板,我想根据数据绑定控件切换它们的可见性。 PanelX 可见,而 PanelY 不可见。好吧,我遇到了一个问题...... PanelX 将是可见的,而 PanelY 将是不可见的。但是,如果我将表单输入更改为 PanelY 应该可见而 PanelX 应该不可见的位置,它们都是不可见的。无论我做什么,我都无法让 PanelY 可见。

嗯,解决方案是这样的。我已将 PanelY 放在 PanelX 中(当然没有意识到我做了)。我想要的是 PanelX 和 PanelY 都在主窗体容器上。但是就像我说的,PanelY 在 PanelX 的容器内......所以当 PanelX 不可见并且 PanelY 应该可见时,PanelY 也是不可见的,因为它的容器(PanelX)是不可见的。

长话短说,确保您的面板放在正确的容器中。

【讨论】:

  • 我知道这是旧的,但我想发表评论并说我只是做了同样的事情。我发现的最简单的解决方法是将一个面板放置在您希望它们全部开始的位置(假设它们都是重叠的),然后只需将其余部分的位置复制/粘贴到它们的属性中(或者如果更适合您的需要,则以编程方式设置它) .
  • @WestonOdom ,多年后手动设置 Location 属性对我有用!我将每个面板移离另一个(我有 4 个),然后将位置设置为我需要的位置。
猜你喜欢
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2012-05-04
  • 1970-01-01
相关资源
最近更新 更多