C# 带有灰色背景的弹出模式对话框

C# 带有灰色背景的弹出模式对话框,c#,winforms,C#,Winforms,我想做一个经典的模式窗口与黑暗的背景 我不知道为什么这么难做到。我尝试了很多方法去做,但是它不符合我的需要 我有10+模态窗口,它们是定制的形式,它们有网格、图表等 他们不是“好的,不,取消”员工 我尝试应用下面的代码。代码基本上在父窗体和模态窗体之间创建另一个黑色背景窗体 Form f = new Form(); f.BackColor = Color.Black; f.Size = this.Size;

我想做一个经典的模式窗口与黑暗的背景

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

我有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();
上面的代码工作得非常好。但是,如果我将父窗体(主窗体)移动到某个位置而不是屏幕中心,则黑色窗体仍然显示在屏幕中心,而不是屏幕的父窗体

我如何解决我的问题

注:这不是与以下问题重复的主题;

.StartPosition
更改为
.Manual
,以便您可以将
位置设置为参考表格所在的位置。
另外,在两个新表单的
.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();