0

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

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

在任何 Windows 应用程序(使用标题栏)中,当您尝试从对话框导航回主程序时(不关闭对话框) - 它不会让您这样做。对话框的边框闪烁,您会听到 Windows 错误声音。某种等效的视觉反馈会很棒,而无需使用默认标题栏 - 并且将整个窗口着色为更暗似乎可以很好地解决问题。

类似这样的伪代码,可以在打开对话框时很好地着色父窗口:

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

我试图放置一个面板,覆盖所有颜色设置为“透明”的面板(目的是稍后控制面板的不透明度),但透明度似乎不起作用。实现这一目标的任何其他想法?或者有没有人有更好的建议来实现相同水平的视觉反馈?

摘要:有没有办法给整个窗口着色,或者用颜色覆盖它?如果没有,任何人都可以建议一种使窗口显示为“非活动”的替代方法吗?

4

1 回答 1

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

于 2013-03-17T00:55:59.317 回答