如果标签太宽,如何将标签分成多行

时间:2013-05-23 19:01:07

标签: c# string winforms label messagebox

我想创建自己的消息框,这是它的构造函数:

    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

3 个答案:

答案 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" />