【发布时间】:2020-04-02 20:09:42
【问题描述】:
我有一个打开多个对话框的winforms C# 应用程序。为了适应应用程序的风格,我删除了每个窗口的默认标题栏并创建了自己的标题栏(带有控制按钮和拖动移动功能)。
我现在面临的问题是,如果没有标题栏,当手动将它们分开时,用户无法分辨哪个窗口是“活动”窗口(因此它们不会重叠)。
在任何 Windows 应用程序(使用标题栏)中,当您尝试从对话框导航回主程序(不关闭对话框)时 - 它不会让您这样做。对话框的边框闪烁,您会听到 Windows 错误声音。如果不需要默认的标题栏,某种等效的视觉反馈会很棒 - 并且将整个窗口着色为更暗似乎可以很好地解决问题。
类似这样的伪代码,可以在对话框打开时很好地着色父窗口:
// tint window now
window.ShowDialog();
// un-tint window
我试图放置一个面板,覆盖所有颜色设置为“透明”的面板(目的是稍后控制面板的不透明度),但透明度似乎不起作用。实现这一目标的任何其他想法?或者有没有人有更好的建议来实现相同级别的视觉反馈?
总结: 有没有办法给整个窗口着色,或者用颜色覆盖它?如果没有,任何人都可以建议一种使窗口显示为“非活动”的替代方法吗?
【问题讨论】:
-
@HansPassant 这个问题正是我所需要的。我已经创建了具有有机玻璃功能的 Utils 类,但你能给我一个如何调用它的例子吗?对不起,这让我有点困惑:D
-
@HansPassant 如果没问题的话,只是一个快速指针,我会 +1 你:D