C# Winform 文本面板带滚动条
在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 文本面板带滚动条相关推荐
- Qt基于Qml实现带滚动条的TextEdit
演示效果 1.鼠标中键操作滚动条 //鼠标中键滚动信号 onWheel: {if (wheel.angleDelta.y > 0) {vbar.decrease();}else {vbar.in ...
- 滚动条的值如何赋值_如何给Word文本框添加滚动条?史上最详细步骤
在工作中我们经常需要使用Microsoft Word来进行编辑文件等,而Microsoft Word也总是能给我们许多的惊喜,因为它总能帮助我们去解决许多工作上的问题.当有些小伙伴不再是局限于仅仅使用 ...
- Fast Stone超好用的截图工具,可截取长图,带滚动条的页面
2019独角兽企业重金招聘Python工程师标准>>> Fast Stone下载地址:http://www.mydown.com/soft/402/473304402.shtml 注 ...
- echarts 图表导出PDF(带滚动条)/图片导出PDF
echarts 图表导出PDF[带滚动条]/图片导出PDF 效果展示 提出问题 思考问题 解决问题 导出PDF 里面的页头中文乱码问题 参数说明 效果展示 提出问题 在开发过程中,有需求是将展示出来的 ...
- 隐藏浏览器自带滚动条方法
目录 1.Chrome | Safari 2.Firefox 3.IE | Edge 有时候,无论内容是否超出都不显示,我们需要隐藏浏览器的默认滚动条,如下图 1.Chrome | Safari 谷歌 ...
- js计时器案例--带滚动条的无缝滚动
带滚动条的无缝滚动 一.效果图 二.设计思路 三.核心代码 一.效果图 二.设计思路 第一步:克隆两个ul,使用循环计时器进行无缝滚动 第二步:设置滚动的速度和时间 第三步:设置鼠标进去box停止滚动 ...
- App 金刚区导航菜单,类似淘宝、QQ 音乐等 APP 导航,方格布局横向滑动翻页带滚动条
TransformersLayout 项目地址:zaaach/TransformersLayout 简介: :fire: App 金刚区导航菜单,类似淘宝.QQ 音乐等 APP 导航,方格布局横向滑 ...
- Pr:文本面板之转录文本
Pr菜单:窗口/文本 Text 在文本面板的转录文本 Transcript选项卡中,单击"转录序列" Transcribe sequence按钮,然后设置好选项并进行语音到文本的转 ...
- 《AI上字幕》基于openAI研发的whisper模型,语音(视频)一键转文本/字幕/带时间轴/支持多语言/自带翻译《桌面版教程》
简介: OpenAI的chatGPT非常火爆,其实OpenAI旗下的另一个模型实力也十分强大,它就是开源免费的Whisper语音转文本模型,目前为止它是较为顶尖的语音转文本模型 当前github上也有 ...
最新文章
- mysql2008 limit,在SQL Server中实现 Limit m, n 的功能
- 多重背包单调队列优化思路_多重背包之单调队列优化理论性总结
- 【深度学习入门到精通系列】开始恢复更新通知~!
- java和python哪个好就业2020-Java和Python哪个发展前景好?老男孩教育
- C语言程序设计0004,C语言程序设计0004.doc
- 白话算法(6) 散列表(Hash Table)从理论到实用(中)
- 【Git】Git修改Repository语言类型
- ci php view,CI映射(加载)数据到view层的方法,ciview_PHP教程
- TPS,QPS,RT,PV,UV,IV 含义
- oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1
- Javascript --- 模板引擎
- TestNg测试框架
- 【Codeforces 538 H】Summer Dichotomy(二分图染色)
- 平庸前端码农之蜕变 — AST
- uniapp添加蒙版的时候怎么禁止页面滚动
- 打印机CCC认证费用、周期
- 1.python自动化登录12306
- 【20保研】北京航空航天大学计算机学院2019年全国优秀大学生夏令营活动通知...
- 【华为云技术分享】如何将代码自动迁移到鲲鹏平台
- DF-700滤桶 四个角扣具漏水问题