2011-03-24 73 views
8

我想显示一个MessageBox,提醒用户该进程已完成,并对该进程的每个阶段花费多长时间进行细分。我想要显示格式正确的文本,但MessageBox类的默认字体不是单宽度。据我所知,没有办法指定文本显示的字体。C#格式化MessageBox

有没有可用于此目的的开箱即用图书馆,或者我是否必须自己写一个图书馆?

+0

我敢肯定有已经写库,但它不会花费太多自己写一个。 – 2011-03-24 14:57:58

+0

我在其中一个项目中遇到了同样的问题,其中我必须显示更大的字体大小。为此,我创建了自己的自定义消息框。检查此链接以供参考。 http://www.codeproject.com/KB/cs/A_Custom_Message_Box.aspx – reggie 2011-03-24 15:00:13

回答

12

任何不是仅仅创建带有等宽字体的文本框/标签的Form,然后致电Form.ShowDialog?听起来像一个单独的图书馆,这对我来说会过度。

+0

是的,这是我想到的解决方案。我认为这将是一个普遍的情况,并且惊讶地发现没有办法用'MessageBox'来完成它,所以我希望我只是错过了一些东西。谢谢。 – 2011-03-24 15:14:20

+1

@ T.K .:我可能是错的,但我认为'MessageBox.Show'只是调用Win32消息框,我怀疑它没有这种功能。 – 2011-03-24 15:16:36

+0

使用表单的一大优势是,您可以将文本复制到剪贴板。例如。使用只读文本框向用户显示错误消息;看起来像一个标签,但可以复制。 – 2014-08-06 03:10:55

2

听起来像是你可能只是想在那里下降的新形式和使用一些标签..

+0

我特别喜欢Jon Skeets的评论,因为他特别提到使用ShowDialog()来调出表单。这样,您可以设置DialogResult表单属性,并且ShowDialog()调用将阻止执行,直到关闭对话框并返回DialogResult。 – 2011-03-24 15:06:33

9

根据记录,其实这是可能的,消息框()扩展卡。例如:

private void button1_Click(object sender, EventArgs e) { 
     MessageBox.Show(
      "hello\tworld\r\n" + 
      "second\tline"); 
    } 

如果字宽开始接近制表符宽度,这并不是非常值得信赖。你仍然应该更喜欢一个ListView的小帮手窗体。

+0

这是一个有用的答案。我想在MessageBox中使用选项卡。谢谢。 – MikeMalter 2011-08-06 00:31:24