【问题标题】:Prevent string from breaking to new line in MessageBox防止字符串在 MessageBox 中换行
【发布时间】:2011-08-08 16:51:26
【问题描述】:

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

谢谢。

【问题讨论】:

  • 乔尔,感谢您的链接。这正是我害怕的。好吧,至少我可以撕掉创可贴,它只会伤害一秒钟,我可以继续移植应用程序。再次感谢。

标签: c# winforms formatting messagebox


【解决方案1】:

唯一(受支持)的方式来控制此处的布局方式是放弃 MessageBox 帮助器类并构建一个自定义 Form 类来满足您的需求。

【讨论】:

  • 罗伯特,感谢您的回答。 Joel 在上面发布了一个链接,详细介绍了该链接。
【解决方案2】:

我们过去曾处理过此问题,即在我们的消息文本中嵌入换行符 (\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,并且窗口已经增长到正确的高度以显示所有内容。第二行创建一个带有单行和适当宽度以显示整行的 MessageBox。

【讨论】:

  • 对我来说奇怪的是我成功地使用了制表符,但是由于某种原因,我在一行的两个单词之间有一个空格,并且消息框选择在那里中断。我不明白为什么它会选择在句子中间打断。
  • 我从未见过这种行为。如果您想保留完整的消息并获得一个非常宽的消息框窗口,或者想办法获得一个更具可读性的消息框窗口,我从问题标题中不确定。我的回答会给你一个更易读的消息框。
  • 查看上面 Joel 的链接。遗憾的是,一切都在那里。
  • 我们在工作中仍然在 XP 上运行,所以我没有看到这个。 Win7 迁移正在加速,所以至少我会为这个问题做好准备。
  • 是的,只需创建一个表单并让它看起来和行为都像 MessageBox 就足够简单了。我将单个富文本编辑控件放在可停靠面板中,并将编辑控件停靠以适应面板的大小。还没有放图标,但我相信这不会成为问题。
猜你喜欢
  • 2016-10-26
  • 2018-03-04
  • 2014-12-21
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多