0

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

    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,如下所示:

abcabcabcabcabcabcabcabcabcabcabc
abcabcabcabcabcabcabcabcabcabcabc
abcabcabcabc

(您可以记住原始消息框对长字符串的反应)

先感谢您!VB理论

编辑:搜索了几个星期后,我找到了一篇完全解决这个自动换行问题的文章:http: //www.codeproject.com/Articles/51488/Implementing-Word-Wrap-in-C#_rating

4

3 回答 3

1

获取字符串的长度,如果大于444,使用substring函数解析从0到444的完整字符串,从444到string.Length()。如果第二个子串仍然大于 444,则用泡沫冲洗并重复。将字符串放入字符串数组中,并在消息框中显示,循环遍历数组,在每个字符串元素后插入一个换行符。

于 2013-05-23T19:43:33.837 回答
0

TextBlock有包装选项而不是Label.

<TextBlock
     Text="abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
     TextWrapping="Wrap" />
于 2013-05-23T19:35:19.027 回答
0

对于 GDI+,Graphics.DrawString()如果您想要 GDI+ 功能,那么使用哪个会更好。它具有以下格式选项:StringFormatFlags

您可以使用它为您包装文本,方法是为其提供一个矩形来包装文本。这可能是你最好的选择。

这是一个很好的例子,说明如何使用Graphics.DrawString()

或者,对于 GDI,您有TextRenderer.

TextRenderer.DrawText()通过设置,您可以对布局进行大量控制TextFormatFlags

此外,您可以使用TextRenderer.MeasureText()准确测量文本。它使用相同的计算,DrawText()因此您可以一起使用它们。

于 2013-05-23T19:34:14.167 回答