C# 防止字符串断开到MessageBox中的新行

C# 防止字符串断开到MessageBox中的新行,c#,winforms,formatting,messagebox,C#,Winforms,Formatting,Messagebox,有没有一种方法可以防止MessageBox破坏字符串,而不是仅仅增长到字符串的宽度?我正在移植一个旧的VB应用程序,它们使用消息框向用户显示大量数据。我想我可以创建一个表单,但我已经开始走这条路了,我不想再回去了 谢谢。要控制这里的布局方式,唯一(受支持的)方法是放弃MessageBox helper类,构建一个满足您需要的自定义表单类。我们过去处理过这个问题,就是在消息文本中嵌入换行符(\r\n)。MessageBox将垂直增长以支持包装文本。我们以前的MessageBox很宽,你甚至看不到中

有没有一种方法可以防止MessageBox破坏字符串,而不是仅仅增长到字符串的宽度?我正在移植一个旧的VB应用程序,它们使用消息框向用户显示大量数据。我想我可以创建一个表单,但我已经开始走这条路了,我不想再回去了


谢谢。

要控制这里的布局方式,唯一(受支持的)方法是放弃MessageBox helper类,构建一个满足您需要的自定义表单类。

我们过去处理过这个问题,就是在消息文本中嵌入换行符(\r\n)。MessageBox将垂直增长以支持包装文本。我们以前的MessageBox很宽,你甚至看不到中间的按钮,但现在它们显示得很好

根据生成消息文本的复杂性和/或您是否可以控制,这可能是最简单的解决方案。否则,我认为您需要创建自己的表单

例如:

MessageBox.Show("Line1\r\nLine2\r\nLine3\r\nLine4", "MessageBox test");
MessageBox.Show("Line1 Line2 Line3 Line4", "MessageBox test");

第一行创建了一个包含4行文本的MessageBox,窗口已增长到正确的高度以显示所有内容。第二行创建了一个消息框,其中只有一行和适当的宽度来显示整行。

Joel,感谢您的链接。这正是我所害怕的。好吧,至少我可以撕下绷带,它只会痛一秒钟,我可以继续移植应用程序。再次感谢。对我来说奇怪的是,我成功地使用了制表符,但是由于某种原因,我在一行的两个单词之间有一个空格,消息框选择在那里断开。我不明白为什么它会选择在句子中间断裂,我从未见过这种行为。从问题标题来看,我不确定您是否希望保留完整的消息并获得一个非常宽的messagebox窗口,或者找到一种方法来获得一个更可读的messagebox窗口。我的回答会给你一个更具可读性的信息框。遗憾的是,我们仍然在工作中使用XP,所以我没有看到这一点。Win7迁移正在加速,所以至少我会为这个问题做好准备。是的,它非常简单,只需创建一个表单,让它看起来和行为像一个MessageBox。我在一个可固定面板中放置了一个富格文本编辑控件,并固定编辑控件以适应面板的大小。我还没有把图标放进去,但我相信这不会是个问题。罗伯特,谢谢你的回答。乔尔在上面贴了一个详细的链接。