如何在C#中进行"系统模态对话"?

Jav*_*ram 2 c# vb.net

如何使我的表单成为Windows XP中的"系统模式对话框"

"关闭对话框",因此除了我在C#中的表单外,不能在Windows中进行任何操作.

Ber*_*ard 6

根据微软的Raymond Chen的说法:

Win32不再具有系统模式对话框.所有对话框都是其所有者的模态.

此外,您的问题与问题重复.

  • 我认为通常认为应用程序接管整个系统的控制权是"粗鲁行为". (2认同)

ste*_*nar 5

我同意Bernarnd的观点,即以这种方式接管系统是"粗鲁的".

如果你需要这种东西,你可以创建一个类似的效果,如下所示.这类似于用户帐户控制("您是否希望允许以下程序对计算机进行更改")在Vista中引入的模式窗口,它在模态窗口后面显示透明背景.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // show a "wrapper" form that covers the whole active screen
        // This wrapper shows the actual modal form
        Form f = new Form();
        f.WindowState = FormWindowState.Maximized;
        f.FormBorderStyle = FormBorderStyle.None;
        f.Opacity = 0.5;
        f.Load += new EventHandler(f_Load);
        f.Show();
    }

    void f_Load(object sender, EventArgs e)
    {
        MessageBox.Show("This is a modal window");
        ((Form)sender).Close();
    }        
}
Run Code Online (Sandbox Code Playgroud)

这是一种不那么粗鲁的方法,因为用户可以ALT-TAB退出模态窗口等.