2012-03-28 91 views
4

我想创建一个模式对话框,该对话框比标准的.NET MessageBox提供更多的控件。我创建了自己的Windows窗体,将使用ShowDialog()调用以提供模态行为。但是,我想通过MesageBoxIcon使用MessageBox附带的图形。这可能吗?是否也可以复制播放与消息框图标相关的错误/警告窗口声音(因为它们是在用户的Windows设置中设置的)?带有MessageBox图标和声音的自定义WinForm

回答

9

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

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

对于声音,请参阅System.Media.SystemSounds类来播放相关声音。

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

只是想补充一点,这是绘制系统图标一个很好的参考(该文件是here): HTTP:// WWW .codeproject.com/script/Articles/ViewDownloads.aspx?aid = 154680 – 2012-03-28 16:33:03

+0

您需要使用Graphics.DrawIcon()或一些变体,因为SystemIcons会返回Icon,而不是Image,但您基本上都在那里。 – 2012-03-28 16:41:44

+0

@StealthRabbi哎呀。更新的代码。是,'DrawIcon'或使用'ToBitmap()'函数。 – LarsTech 2012-03-28 16:44:40

1

MessageBox是由OS提供的恐怕。你可以扩展它,但它需要很多工作(参见this CodeProject文章的教程)。你最好的选择可能是再次从Form中继承一个控件,如你所建议的。

要访问的图标,这是因为使用System.Drawing.SystemIcons类一样简单