【问题标题】:c# winform opacity 70% but panel inside opacity 100%c# winform opacity 70% but panel inside opacity 100%
【发布时间】:2013-08-21 09:40:58
【问题描述】:

我有不透明度为 70% 的 windows 窗体,我在从服务器获取数据时用作覆盖。

在我的表单中,我有一个居中的面板,其中包含“请稍候...”文本。现在这个面板也受到不透明度的影响,但我想为面板覆盖它,使面板不透明度为 100%。

有什么线索吗?

非常感谢

【问题讨论】:

标签: c# winforms opacity


【解决方案1】:

我不相信你可以让一个包含的面板比它的容器更不透明,所以它不会像设置不透明度那么简单。

我想到了两个想法:

  1. 让您的“请稍候...”不是您的表单的子项。如果它本身就是一个顶级表单,您可以在其上设置任何您想要的不透明度,而不必担心它的父级。
  2. 让您的顶级表单具有 100% 的不透明度,并将其所有子表单的不透明度更改为 70%,“请稍候...”面板除外。

在这两个中,第一个听起来不那么难看 - 它只是意味着您需要一个额外的顶级表单。不过,第二个并没有那么糟糕,您只需要遍历顶层表单的所有子代。

【讨论】:

  • 按照您的建议,我创建了一个不透明度为 70% 的 frmOverlay。然后从我的主要表格中展示它。然后在 frmOverlay.Load 事件中,我创建了一个 100% 不透明度的 frmPleaseWait 表单实例,并且我还做了一个 frm.Show(this)。似乎它的工作正常。这两种形式都不是最重要的,所以如果应用程序在后台,我不想看到“请稍候”。你怎么看?
  • @VAAA 如果您的意思是frmPleaseWait.Show(this),请去掉(this)。否则,你会让frmOverlay 成为另一个人的父母。
猜你喜欢
  • 2014-10-17
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
相关资源
最近更新 更多