【发布时间】:2013-01-04 08:41:45
【问题描述】:
我在windows form 中有一个label 控件。我想在label 中显示全文。条件是这样的:
- 如果文本长度超过 32 个字符,它将出现在新行中。
-
如果可能的话,用完整的单词分割,不带连字符(-)。
到目前为止,我已经达到了以下代码:
private void Form1_Load(object sender, EventArgs e) { string strtext = "This is a very long text. this will come in one line.This is a very long text. this will come in one line."; if (strtext.Length > 32) { IEnumerable<string> strEnum = Split(strtext, 32); label1.Text =string.Join("-\n", strEnum); } } static IEnumerable<string> Split(string str, int chunkSize) { return Enumerable.Range(0, str.Length / chunkSize) .Select(i => str.Substring(i * chunkSize, chunkSize)); }
但问题是最后一行没有完全显示,因为它被 32 个字符分割。
还有其他方法可以实现吗?
【问题讨论】:
-
我看到了您的问题 - 最后一点文字没有显示出来。我建议您阅读下面的 cmets,您从中获取了 Split 方法,答案就在那里。 stackoverflow.com/questions/1450774/…
-
有没有办法用全文分词,不带连字符(-)?
-
是的,您需要实现一个 Word-Wrap 方法。看起来史蒂夫提供了一个,我会在几分钟后发布我使用的那个。
标签: c# .net string winforms substring