隐藏.NET MessageBox'任务栏图标

时间:2013-11-25 15:08:54

标签: c# .net winforms messagebox

是否可以以没有任务栏图标或具有自定义图像的方式调用静态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
}

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

3 个答案:

答案 0 :(得分: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
}

但是如果您的程序目前没有其他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
}

答案 1 :(得分:2)

不可能。

MessageBox功能按原样提供给我们。有些项是可配置的,有些则不是。网上有其他选择。在CodeProject中查看,他们有一些。

答案 2 :(得分:1)

使用MessageBoxOptions枚举

MessageBoxOptions.DefaultDesktopOnly