c#winform不透明度70%,但面板内部不透明度100%

c#winform不透明度70%,但面板内部不透明度100%,c#,winforms,opacity,C#,Winforms,Opacity,我有一个不透明度为70%的windows窗体,当我从服务器获取数据时,它会用作覆盖 在我的表格中,我有一个面板,中间有“请稍候…”文本。现在这个面板也受不透明度的影响,但我想覆盖面板的不透明度,使面板不透明度为100% 有线索吗 非常感谢我不相信你能使一个包含的面板比它的容器更不透明,所以它不会像设置不透明度那样简单 我想到两个想法: 让你的“请等一下…”不要成为你的孩子。如果它本身是一个顶级表单,那么您可以在其上设置任何您想要的不透明度,而不必担心它的父级 使顶级窗体的不透明度为100%,并将

我有一个不透明度为70%的windows窗体,当我从服务器获取数据时,它会用作覆盖

在我的表格中,我有一个面板,中间有“请稍候…”文本。现在这个面板也受不透明度的影响,但我想覆盖面板的不透明度,使面板不透明度为100%

有线索吗


非常感谢

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

我想到两个想法:

  • 让你的“请等一下…”不要成为你的孩子。如果它本身是一个顶级表单,那么您可以在其上设置任何您想要的不透明度,而不必担心它的父级
  • 使顶级窗体的不透明度为100%,并将其所有子窗体的不透明度更改为70%,而不是“请稍候…”面板

  • 在这两种形式中,第一种听起来不那么难看——它只是意味着你需要一个额外的顶级形式。第二个并不是那么糟糕,不过,你只需要遍历顶部表单的所有子级。

    按照你的建议,我创建了一个frmOverlay,它是一个70%不透明的表单。然后从我的主要形式我展示它。然后在frmOverlay.Load事件中,我创建了一个frmPleaseWait表单的实例,该表单是100%不透明的,并且我还做了一个frm.Show(这个)。它似乎工作得很好。这两种表格都不是最上面的,所以如果申请是在后台,我不想看到“请稍候”。你觉得怎么样?@VAAA如果你的意思是
    frmPleaseWait.Show(this)
    ,那就去掉
    (this)
    。否则,您将使
    frmOverlay
    成为另一个的父级。请参阅:这在Windows 8之前不受支持。考虑到它的受欢迎程度,你必须再等十年才能依赖它。简单的解决方法是在顶部显示另一个窗体。