如何制作一个;“系统模式对话框”;在C#中?

如何制作一个;“系统模式对话框”;在C#中?,c#,vb.net,C#,Vb.net,如何使窗体成为Windows XP中的“系统模式对话框” “关闭对话框”,以便在Windows中除了在C#中的“我的表单”之外,不能进行任何操作。微软的Raymond Chen说: Win32没有系统模式 对话不再。所有对话框都是 向他们的主人道歉 另外,你的问题是一个问题的重复。我同意伯纳德的观点,即以这种方式接管系统是“粗鲁的” 如果你需要这种东西,你可以创建一个类似的效果,如下所示。这类似于Vista中引入的用户帐户控制(“是否允许以下程序对计算机进行更改”)模式窗口,它在模式窗口后面显示

如何使窗体成为Windows XP中的“系统模式对话框”


“关闭对话框”,以便在Windows中除了在C#中的“我的表单”之外,不能进行任何操作。

微软的Raymond Chen说:

Win32没有系统模式 对话不再。所有对话框都是 向他们的主人道歉


另外,你的问题是一个问题的重复。

我同意伯纳德的观点,即以这种方式接管系统是“粗鲁的”

如果你需要这种东西,你可以创建一个类似的效果,如下所示。这类似于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();
    }        
}

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

这可以通过最大化表单 并将不透明度设置为50%

并且设置窗体始终位于顶部属性TRUE

使用KeyHOOK禁用键盘的Win键和Alt键……

您可以使用:

string message = "Hello there! this is a msgbox in system modal";
MessageBox.Show(message is string ? message.ToString() : "Empty Message.",
                "Message from server", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, (MessageBoxOptions)4096);

但有些软件有系统模式,其中之一是“TuneUP实用程序”,我认为一般来说,应用程序接管整个系统的控制被认为是“粗鲁的行为”。Thanx我通过禁用系统键Alt和WIN keyWell Office Word来做到这一点,但它并没有那么粗鲁。至少仅限windows。MessageBoxOptions不再支持40956。支持的值为:DefaultDesktopOnly=131072消息框显示在active desktop上。RightAlign=524288消息框文本右对齐。RtlReading=1048576指定以从右到左的读取顺序显示消息框文本。ServiceNotification=2097152消息框显示在active desktop上。