弹出模式对话框与灰色背景

时间:2017-12-05 17:36:37

标签: c# winforms

我想制作经典的深色背景模态窗口。

我不知道为什么这么难做到。我尝试了很多方法,但它不符合我的需要。

我有10多个模态窗口,它们是定制的表格,它们有网格,图表等。

他们不是'好,不,取消'的工作人员。

我尝试应用以下代码。该代码基本上创建了另一种在父表单和模态表单之间具有黑色背景的表单;

            Form f = new Form();
            f.BackColor = Color.Black;
            f.Size = this.Size;
            f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            f.StartPosition = this.StartPosition;
            f.Opacity = 0.6;
            f.Show();
            notificationSGA nsga = new notificationSGA(Cursor.Position);
            nsga.ShowDialog();
            f.Dispose();
            f.Close();

以上代码完美无缺。但是,如果我将父(主)表单移动到某个地方而不是屏幕的中心,则黑色表单仍然会出现在屏幕的中心而不是屏幕的父级。

我如何解决我的问题?

注意:这不是带有以下问题的重复主题; How to show a pop up message with dark background

1 个答案:

答案 0 :(得分:2)

.StartPosition更改为.Manual,以便将.Location设置为参考表格所在的位置。
此外,更改两个新表单的.Show()方法中的所有者。

    Form f = new Form();
    //(...)
    f.Size = this.Size;
    f.StartPosition = FormStartPosition.Manual;
    f.Location = this.Location;
    //(...)
    f.Show(this);

    notificationSGA nsga = new notificationSGA(Cursor.Position);
    nsga.StartPosition = FormStartPosition.CenterParent;
    nsga.ShowDialog(f);

    f.Dispose();