最近有个需求,需要将C# winform中的listBox中的内容自动换行,
其实在用listBox前,已经用textBox实现了大部分功能,可惜最后还是有个焦点的问题,
就是textBox中的文字会自动被选中,也就是蓝背景,超难看,老板就说不行,所以改换ListBox来试一试
如大家所知,listBox的每一个item就是一条记录,而且默认是不会自动换行的,所以listBox才同时有垂直和水平的滚动条
百度和google一下后,网上给的思路大概是:限定一个长度,字符串超过长度的部分截取下来,添加到下一个item,这样就人为的实现了listBox的自动换行。
结合到我的需求中 字符串是包含空格的,所以我就想了两种思路
思路一:
1.把字符串分割成一个个单独的单词,然后像串珍珠链子一样,一个个的单词组装起来
2.如果长度没有超过给定长度则继续组装(这里用到join方法),
2.1.当超过给定长度时,把最后一个单词从列表中删掉,(并用中间变量保存下来,添加到下一行的开头,中间变量的初始值为空)
详细看代码:
1 /* 2 *字符串换行,考虑到空格,以及完整单词的情况 3 *@param inputStr 要换行的字符串 4 *@param textWidth 固定的长度,超过这个长度则进行换行 5 * 6 */ 7 public List<string> listBoxWordWrap(string inputStr, int textWidth) 8 { 9 List<string> tempList = new List<string>();//临时存放拼接字符串的列表 10 List<string> lastList = new List<string>();//最终的数据 11 int strLength = inputStr.Length;//获取要换行字符串的长度