在PC软件开发中经常有这样的需求,需要在一个固定大小的面板中显示一些内容,并且面板能上下拖动,将所有的内容完整的展示,有点类似网页上看新闻,如果要在 winfrom 中要如何实现的呢,下面就演示如何实现的吧

效果:

1.新建一个winform 项目,在界面中拖入一个Panel

将 panel1 的 AutoScroll 设置为 True

2.再次拖入一个 Panel ,将高度拉长,这时就自动出现了滚动条,只是此时里面还没有任何内容,下面就在 panel2 中加入一点内容。

3.在 panel2 中加入一个 Label ,将 AutoSize 设置为 false

这时,就可以调整 label 的大小了

将 label1 大小设置成 panel2 的大小一样,并且,将位置坐标的 x,y 都设置为0

随便打一点字,运行后,用鼠标中轮滚动,就能看到滚动效果了

当前的控件挡住了后面的控件,点击不到,就无法修改它的属性,这里分享一个小技巧,我们找到属性界面:

找到图中的这个下拉框, 直接在下拉框进行切换就好了

4.此时 panel 的大小是固定的,如果有的内容非常的长,有的比较短,这样显示要么会导致部分内容看不到,要么就会有大量的空白部分,这个时候,我们就需要有能自动调整展示面板高度的功能了,下面的代码是用来显示 Json 的,可以参考一下:

代码:

using Newtonsoft.Json;
using System;
using System.Drawing;
using System.IO;
using System.Text.RegularExpressions;
using System.Windows.Forms;namespace Test
{public partial class JsonWin : Form{public JsonWin(string json){InitializeComponent();Json= json;}private string Json = string.Empty;private void JsonWin_Load(object sender, EventArgs e){string json = PraseToJson(Json);string[] arr = Regex.Split(json, "\r\n", RegexOptions.IgnoreCase);Size size = label1.Size;Size newSize = new Size(size.Width, arr.Length * 23);label1.Size = newSize;panel2.Size = newSize;label1.Text = json;}public string PraseToJson(string json){try{JsonSerializer s = new JsonSerializer();JsonReader reader = new JsonTextReader(new StringReader(json));Object jsonObject = s.Deserialize(reader);StringWriter sWriter = new StringWriter();JsonWriter writer = new JsonTextWriter(sWriter);writer.Formatting = Newtonsoft.Json.Formatting.Indented;s.Serialize(writer, jsonObject);return sWriter.ToString();}catch (Exception){return json;}}}
}

PraseToJson 方法可以将连在一起的 json 字符串,转换为一个标准的 Json 模板样式,

Regex.Split 是根据换行符号,来分割 json ,得到 json 的总行数,以便确定 Panel 的行高,得到行高后,就能确定大概的高度了,后面通过 Size 的调整,就能根据文本的内容,来确定大概的行高了。

不过这种方式,只能在有换行符的内容中,如果内容像新闻一样,几千字都没有一个换行符就稍微麻烦一点,需要计算每一行能显示多少个文字来计算有多少行,不过能显示个大概就行,多几行空白应该不会有太大的影响吧。

end

C# Winform 文本面板带滚动条相关推荐

  1. Qt基于Qml实现带滚动条的TextEdit

    演示效果 1.鼠标中键操作滚动条 //鼠标中键滚动信号 onWheel: {if (wheel.angleDelta.y > 0) {vbar.decrease();}else {vbar.in ...

  2. 滚动条的值如何赋值_如何给Word文本框添加滚动条?史上最详细步骤

    在工作中我们经常需要使用Microsoft Word来进行编辑文件等,而Microsoft Word也总是能给我们许多的惊喜,因为它总能帮助我们去解决许多工作上的问题.当有些小伙伴不再是局限于仅仅使用 ...

  3. Fast Stone超好用的截图工具,可截取长图,带滚动条的页面

    2019独角兽企业重金招聘Python工程师标准>>> Fast Stone下载地址:http://www.mydown.com/soft/402/473304402.shtml 注 ...

  4. echarts 图表导出PDF(带滚动条)/图片导出PDF

    echarts 图表导出PDF[带滚动条]/图片导出PDF 效果展示 提出问题 思考问题 解决问题 导出PDF 里面的页头中文乱码问题 参数说明 效果展示 提出问题 在开发过程中,有需求是将展示出来的 ...

  5. 隐藏浏览器自带滚动条方法

    目录 1.Chrome | Safari 2.Firefox 3.IE | Edge 有时候,无论内容是否超出都不显示,我们需要隐藏浏览器的默认滚动条,如下图 1.Chrome | Safari 谷歌 ...

  6. js计时器案例--带滚动条的无缝滚动

    带滚动条的无缝滚动 一.效果图 二.设计思路 三.核心代码 一.效果图 二.设计思路 第一步:克隆两个ul,使用循环计时器进行无缝滚动 第二步:设置滚动的速度和时间 第三步:设置鼠标进去box停止滚动 ...

  7. App 金刚区导航菜单,类似淘宝、QQ 音乐等 APP 导航,方格布局横向滑动翻页带滚动条

    TransformersLayout 项目地址:zaaach/TransformersLayout  简介: :fire: App 金刚区导航菜单,类似淘宝.QQ 音乐等 APP 导航,方格布局横向滑 ...

  8. Pr:文本面板之转录文本

    Pr菜单:窗口/文本 Text 在文本面板的转录文本 Transcript选项卡中,单击"转录序列" Transcribe sequence按钮,然后设置好选项并进行语音到文本的转 ...

  9. 《AI上字幕》基于openAI研发的whisper模型,语音(视频)一键转文本/字幕/带时间轴/支持多语言/自带翻译《桌面版教程》

    简介: OpenAI的chatGPT非常火爆,其实OpenAI旗下的另一个模型实力也十分强大,它就是开源免费的Whisper语音转文本模型,目前为止它是较为顶尖的语音转文本模型 当前github上也有 ...

最新文章

  1. mysql2008 limit,在SQL Server中实现 Limit m, n 的功能
  2. 多重背包单调队列优化思路_多重背包之单调队列优化理论性总结
  3. 【深度学习入门到精通系列】开始恢复更新通知~!
  4. java和python哪个好就业2020-Java和Python哪个发展前景好?老男孩教育
  5. C语言程序设计0004,C语言程序设计0004.doc
  6. 白话算法(6) 散列表(Hash Table)从理论到实用(中)
  7. 【Git】Git修改Repository语言类型
  8. ci php view,CI映射(加载)数据到view层的方法,ciview_PHP教程
  9. TPS,QPS,RT,PV,UV,IV 含义
  10. oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1
  11. Javascript --- 模板引擎
  12. TestNg测试框架
  13. 【Codeforces 538 H】Summer Dichotomy(二分图染色)
  14. 平庸前端码农之蜕变 — AST
  15. uniapp添加蒙版的时候怎么禁止页面滚动
  16. 打印机CCC认证费用、周期
  17. 1.python自动化登录12306
  18. 【20保研】北京航空航天大学计算机学院2019年全国优秀大学生夏令营活动通知...
  19. 【华为云技术分享】如何将代码自动迁移到鲲鹏平台
  20. DF-700滤桶 四个角扣具漏水问题

热门文章

  1. 实验二 Linux系统用户与组的管理
  2. python批量读取图片处理并保存
  3. Haproxy基础知识 -运维小结
  4. cmos sensor (图像传感器) CSI接口
  5. 什么是Socket?websocket和socket区别?
  6. 2022年起重机司机(限门式起重机)考试题库及在线模拟考试
  7. Embeded linux之网卡驱动
  8. js控制form提交的action
  9. MIUI12 for OnePlus 7T 使用钱包app 的尝试
  10. 基础知识--封装、继承、多态、抽象