很多朋友都会在开发WinForm中遇到Label要显示的内容太长,但却不能换行的问题.这里我总结了几种方法,供大家参考。

第一种是把Label的AutoSize属性设为False,手动修改Label的大小.这样的好处是会因内容的长度而自动换行,但是当内容的长度超过所设定的大小时,多出的内容就会无法显示.因此,这种方法适合于基本确定内容长度的时候使用。

第二种是把Label的Dock设为FILL,同时将AutoSize属性设为False,这种方法可将上面所说的缺点修正,但是同时Label会将其它控件的位置霸占,影响布局.因此,在使用该方法时,最好给Label加上个Panel或GroupBox控件。

第三种是通过判断内容的长度,动态设置Label的大小.具体程序如下(Label控件取名为Label1,显示内容的字符串为str):
int LblNum = str.Length; //Label内容长度
int RowNum = 10; //每行显示的字数
float FontWidth = label1.Width / label1.Text.Length; //每个字符的宽度
int RowHeight=15; //每行的高度
int ColNum=(LblNum-(LblNum/RowNum)*RowNum)==0?(LblNum/RowNum):(LblNum / RowNum)+1; //列数
label1.AutoSize = false; //设置AutoSize
label1.Width = (int)(FontWidth * 10.0); //设置显示宽度
label1.Height = RowHeight * ColNum; //设置显示高度

通过这种方法可以令Label每行所显示的字数得到控制,同时也动态的生成的所对应的行数,这对于排版有很大的好处,但是如果显示内容过多,该方法也会令多出来的内容无法显示.因此,对于显示内容过长的时候,可以在外层加上Panel或GroupBox,设置AutoScroll为true,这样就不会因为太长而导致Label高度扩大而影响其它控件的布局,同时也可以更好地显示完整的内容。

三种方法都有它的优缺点,没有说谁优谁劣,只有最适合的,朋友们不妨试试

label好像加不了滚动条,最好使用其他控件,你可以使用textbox,将它设置成多行,可以设置滚动条,如果你想让textbox的样式与label类似,你可以将textbox的边框设置为none,并将背景颜色设置于窗体颜色一致。

用textarea代替label吧, 把它disable了就和label一样了, 这样会自动出现滚动条的.
补充回答: 一般情况下, 如果需要显示的label含有滚动条, 都是用textarea处理的, 也就是多行的textbox. 设置好了效果是一样的.. 如果你一定要用label而且还要滚动条, 估计需要自己写吧.

转载于:https://www.cnblogs.com/blogpro/p/11459917.html

C#在WinForm开发中Label换行方法相关推荐

  1. iOS开发中常用的方法

    iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...

  2. WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色

    WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色  在B/S开发中,对TreeView控件要改变当前选中节点的颜色比较方便,其有相应的SelectedNodeChanged事件 ...

  3. c#winform开发中DialogResult的用法

    1.DialogResult经常用在winform开发中的登录,设置参数中,在主窗体中弹出设置参数的窗体,当我们点击设置参数窗体上的确定按钮时,直接返回设置参数窗体的DialogResult的属性即可 ...

  4. 在Winform开发中使用FastReport创建报表

    FastReport.Net是一款适用于Windows Forms, ASP.NET和MVC框架的功能齐全的报表分析解决方案.可用在Microsoft Visual Studio 2005到2015, ...

  5. 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)

    第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...

  6. Flex中label换行

    Flex中label换行有两种情况 在AS中赋值: label.text="Online\r\nResources" 在mxml中赋值: text="Online Res ...

  7. Winform开发中手写签名的实现

    由于项目的需要,需要在项目的Winform系统的一个模块中集成手写签名的功能,一开始对这块不是很了解,只是了解他能够替代鼠标进行签名.既然是签名,一般就是需要记录手稿图片,作为一个记录核实的凭证,因为 ...

  8. 中label换行问题_如何巧妙处理 Git 多平台换行符问题(LF or CRLF)

    选自<旷世的忧伤> 作者:旷修 http://blog.konghy.cn/2017/03/19/git-lf-or-crlf/ 禁止二次转载 自从工作以后,基本上没有接触过 Window ...

  9. 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议1~5)...

                 The reasonable man adapts himself to the world; The unreasonable one persists in trying ...

最新文章

  1. 转:中国互联网十五年的22个创新模式
  2. jUnit Test遇到org.apache.ibatis.binding.BindingException
  3. UA MATH571A QE练习 R语言 多重共线性与岭回归
  4. Spring Cloud(三) 熔断器Hystrix
  5. laravel 框架基础 学习整理
  6. 代码小结:时区的时间问题
  7. 英语中十二个月名称的由来
  8. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...
  9. Access 利用模版实现条码打印功能
  10. [渝粤教育] 山东财经大学 国际经济学 参考 资料
  11. 【javascript】手写一个webpack plugin
  12. (9)数据结构-双端队列
  13. Linux用php上传表单文件,文件太大提示[413 Request Entity Too Large]
  14. 使用二进制编辑器制作操作系统启动盘
  15. GY-53红外激光测距模块的使用以及pwm模式代码的实现
  16. 面试中可以问面试官的问题
  17. 6个优秀的图片素材网站,全部免费
  18. word设置行距18磅
  19. 快速搭建去中心化视频分享平台peertube
  20. SOA对话:金融风暴不会阻碍SOA市场发展

热门文章

  1. NVIDIA Jetson tx2i 设置cuda10.2 _cudnn8.0, 安装 pyTorch
  2. vxworks issue: PCIE Bar Base Address Unalignment
  3. 实现Android下的FPS实时显示工具
  4. linux传感器三之轴陀螺仪(MPU3050)驱动解析
  5. canvas实战之酷炫背景动画(五)
  6. XDOJ 消除类游戏 C
  7. C++ ARX CAD二次开发实体操作
  8. 数商云:数字化供应链系统搭建,赋能企业实现物流供应链的优化升级
  9. Linux系统发行版磁盘分区方案
  10. 如何获得eclipse的soure code的git地址