“色调”整个窗口,或使窗口看起来不活动的替代方法

时间:2013-03-17 00:33:58

标签: c# winforms

我有一个winforms C#应用程序,可以打开多个对话框。为了适应应用程序的风格,我删除了每个窗口的默认标题栏并创建了自己的(使用控制按钮和拖动功能)。

现在面临的问题是,如果没有标题栏,当用户手动移动时,用户无法告诉哪个窗口是“活动”窗口(因此它们不重叠)。

在任何Windows应用程序(使用标题栏)中,当您尝试从对话框导航回主程序时(不关闭对话框) - 它不会让你。对话框的边框闪烁,您听到窗口错误声音。某种等效的视觉反馈非常棒,而不需要使用默认的标题栏 - 并且整个窗口的颜色较暗似乎可以很好地完成。

伪代码中的这样的东西,在对话框打开时很好地着色父窗口:

// tint window now
window.ShowDialog();
// un-tint window

我试图将一个面板覆盖所有颜色设置为'透明'的面板(以便​​稍后控制面板的不透明度),但透明度似乎不起作用。完成这个的任何其他想法?或者有没有人有更好的建议来达到相同水平的视觉反馈?

摘要: 有没有办法着色整个窗口,或用颜色覆盖它?如果没有,是否有人可以提出另一种方法让窗口显示为“无效”?

1 个答案:

答案 0 :(得分:1)

我建议您在要禁用的表单中创建方法:

void DisableForm()
{
    //some fancy color
    this.BackColor = System.Drawing.Color.Khaki;

    //and disable all controls owned by form, just to be sure
    foreach (var s in this.Controls)
    {
        ((Control)s).Enabled = false;
    }
}

和能够支持这些形式的功能。

修改。 您也可以将控件的可见性属性设置为false