使用自定义 MessageBox 图标及声音的 WinForm

8

我想创建一个模态对话框,它比标准的.NET MessageBox 提供更多的控件。我已经创建了自己的 Windows Form,将使用 ShowDialog() 方法调用以实现模态行为。然而,我想利用 MessageBox 中提供的图形,通过 MesageBoxIcon 来实现。这可行吗?是否还可以复制与消息框图标相关联的错误/警告窗口声音(因为它们是根据用户的 Windows 设置进行设置的)?

2个回答

15

请参考 System.Drawing.SystemIcons 类来显示 MessageBox 类使用的系统图标,例如 QuestionInformationWarning

e.Graphics.DrawImage(SystemIcons.Question.ToBitmap(), new Point(0, 0));

要播放相关的系统声音,请查看System.Media.SystemSounds类。

System.Media.SystemSounds.Asterisk.Play();

只是想补充一下,这是一个很好的绘制系统图标的参考: http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=154680 - Stealth Rabbi
你需要使用Graphics.DrawIcon()或其变体,因为SystemIcons返回的是Icon而不是Image,但你已经基本到位了。 - Stealth Rabbi
@StealthRabbi 抱歉,代码已更新。是的,可以使用 DrawIcon 或者使用 ToBitmap() 函数。 - LarsTech

1

抱歉,MessageBox是由操作系统提供的。你可以进行扩展,但这需要大量的工作(参见thisCodeProject文章的教程)。你最好的选择可能是从Form继承一个控件,就像你建议的那样重新开始。

要访问图标,只需使用System.Drawing.SystemIcons类即可(其文档在here)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接