隐藏.NET MessageBox'任务栏图标

kma*_*ks2 3 .net c# messagebox winforms

是否可以以没有任务栏图标或具有自定义图像的方式调用静态MessageBoxShow()方法?我正在尝试寻找构建自定义MessageBox类的替代方法.

谢谢.

我尝试以DefaultDesktopOnly下列方式选择该选项:

if (MessageBox.Show("Are you sure you would like to do something?", "Title", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.Yes)
{
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,任务栏中仍然有一个图标,主窗体也开始崩溃.如果重要的话,我在Win7.有稳定性问题DefaultDesktopOnly吗?

Ale*_*dro 8

您需要为MessageBox拥有(或不拥有)自身图标的所有者窗口提供对话框,以便不自行显示.如果您MessageBox从打开的表单中调用,则可以将表单作为第一个参数传递给它,使其成为其所有者:

// Assume "this" is a form, not valid from any other class
if (MessageBox.Show(this, "Are you sure you would like to do something?", "Title", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.Yes)
{
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您的程序目前没有其他GUI可见,您可能只是为了提供一个所有者而创建一个虚拟表单,如下所示:

// A new, invisible form is created as the MessageBox owner, this prevents it from appearing in the taskbar
if (MessageBox.Show(new Form(), "Are you sure you would like to do something?", "Title", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.Yes)
{
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)