我想创建自己的消息框,这是它的构造函数:
public MBX(string message)
{
InitializeComponent();
}
public MBX(string message, string title)
{
InitializeComponent();
}
public MBX(string message, string title, string[] buttons)
{
InitializeComponent();
}
我想创建一个空格,将重新格式化消息,使其宽度小于444。
这是一个帮助你的例子:
假设消息是:"abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
并且该字符串的宽度大于444像素,空白将要将其分成多行,直到宽度低于444,如下所示: / p>
abcabcabcabcabcabcabcabcabcabcabc
abcabcabcabcabcabcabcabcabcabcabc
abcabcabcabc
(您可以记住原始消息框对长字符串的反应)
提前谢谢! VBTheory
编辑:搜索了几周之后,我找到了一篇文章来处理这个自动换行问题:http://www.codeproject.com/Articles/51488/Implementing-Word-Wrap-in-C#_rating
答案 0 :(得分:1)
获取字符串的长度,如果大于444,则使用substring函数解析从0到444的完整字符串,并从444解析为string.Length()。如果第二个子串仍然大于444,则用泡沫冲洗并重复。将字符串放入字符串数组中,并在消息框中显示,遍历数组,在每个字符串元素后插入一个新的换行符。
答案 1 :(得分:0)
对于GDI +,如果你想要GDI +功能,最好使用Graphics.DrawString()
。它具有以下格式选项:StringFormatFlags
你可以用它来为你包装文本,方法是为它提供一个矩形来包装文本。这可能是你最好的选择。
Here's a good example of how to wrap text using Graphics.DrawString()
或者,对于GDI,您有TextRenderer
。
TextRenderer.DrawText()
可让您通过TextFormatFlags
设置对布局进行大量控制。
此外,您可以使用TextRenderer.MeasureText()
准确衡量文字。它使用与DrawText()
相同的计算,因此您可以将它们一起使用。
答案 2 :(得分:0)
TextBlock
包含选项而不是Label
。
<TextBlock
Text="abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
TextWrapping="Wrap" />