在c#中的标签中显示全文

在c#中的标签中显示全文,第1张

概述我在 Windows窗体中有一个标签控件.我想在标签中显示全文.条件是这样的: >如果文本长度超过了新行中的32个字符. >如果可能的话,用完整的单词分割,不带连字符( – ). 到目前为止,我已达到以下代码: private void Form1_Load(object sender, EventArgs e) { string strtext = "This is a 我在 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);
总结

以上是内存溢出为你收集整理的在c#中的标签中显示全文全部内容,希望文章能够帮你解决在c#中的标签中显示全文所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存