在c#中的标签中显示全文
发布时间:2020-12-15 05:37:39 所属栏目:百科 来源:网络整理
导读:我在 Windows窗体中有一个标签控件.我想在标签中显示全文.条件是这样的: 如果文本长度超过了新行中的32个字符. 如果可能的话,用完整的单词分割,不带连字符( – ). 到目前为止,我已达到以下代码: private void Form1_Load(object sender,EventArgs e) { str
我在
Windows窗体中有一个标签控件.我想在标签中显示全文.条件是这样的:
>如果文本长度超过了新行中的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个字符. 还有另一种方法来实现这一目标吗? 解决方法
我不知道你是否会接受不使用linq的答案,但这很简单:
string SplitOnWholeWord(string toSplit,int maxLineLength) { StringBuilder sb = new StringBuilder(); string[] parts = toSplit.Split(); string line = string.Empty; foreach(string s in parts) { if(s.Length > 32) { string p = s; while(p.Length > 32) { int addedChars = 32 - line.Length; line = string.Join(" ",line,p.Substring(0,addedChars)); sb.AppendLine(line); p = p.Substring(addedChars); line = string.Empty; } line = p; } else { if(line.Length + s.Length > maxLineLength) { sb.AppendLine(line); line = string.Empty; } line = (line.Length > 0 ? string.Join(" ",s) : s); } } sb.Append(line.Trim()); return sb.ToString(); } 打电话给 string result = SplitOnWholeWord(strtext,32); 可以轻松地在扩展方法中对其进行转换: 将上面的代码放在一个单独的文件中并创建一个静态类 public static class StringExtensions { public static string SplitOnWholeWord(this string toSplit,int maxLineLength) { // same code as above..... } } 并以这种方式调用它: string result = strtext.SplitOnWholeWord(32); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |