C#?Winform文本面板帶滾動(dòng)條的實(shí)現(xiàn)過程
Winform 中如果需要在一個(gè)固定大小的面板中顯示一些內(nèi)容,并且面板能上下拖動(dòng),將所有的內(nèi)容完整的展示,這種需求很常見,下面就演示如何實(shí)現(xiàn)的吧
效果:
1.新建一個(gè)winform 項(xiàng)目,在界面中拖入一個(gè)Panel
將 panel1 的 AutoScroll 設(shè)置為 True
2.再次拖入一個(gè) Panel ,將高度拉長(zhǎng),這時(shí)就自動(dòng)出現(xiàn)了滾動(dòng)條,只是此時(shí)里面還沒有任何內(nèi)容,下面就在 panel2 中加入一點(diǎn)內(nèi)容。
3.在 panel2 中加入一個(gè) Label ,將 AutoSize 設(shè)置為 false
這時(shí),就可以調(diào)整 label 的大小了
將 label1 大小設(shè)置成 panel2 的大小一樣,并且,將位置坐標(biāo)的 x,y 都設(shè)置為0
隨便打一點(diǎn)字,運(yùn)行后,用鼠標(biāo)中輪滾動(dòng),就能看到滾動(dòng)效果了
當(dāng)前的控件擋住了后面的控件,點(diǎn)擊不到,就無法修改它的屬性,這里分享一個(gè)小技巧,我們找到屬性界面:
找到圖中的這個(gè)下拉框, 直接在下拉框進(jìn)行切換就好了
4.此時(shí) panel 的大小是固定的,如果有的內(nèi)容非常的長(zhǎng),有的比較短,這樣顯示要么會(huì)導(dǎo)致部分內(nèi)容看不到,要么就會(huì)有大量的空白部分,這個(gè)時(shí)候,我們就需要有能自動(dòng)調(diào)整展示面板高度的功能了,下面的代碼是用來顯示 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 字符串,轉(zhuǎn)換為一個(gè)標(biāo)準(zhǔn)的 Json 模板樣式,
Regex.Split 是根據(jù)換行符號(hào),來分割 json ,得到 json 的總行數(shù),以便確定 Panel 的行高,得到行高后,就能確定大概的高度了,后面通過 Size 的調(diào)整,就能根據(jù)文本的內(nèi)容,來確定大概的行高了。
不過這種方式,只能在有換行符的內(nèi)容中,如果內(nèi)容像新聞一樣,幾千字都沒有一個(gè)換行符就稍微麻煩一點(diǎn),需要計(jì)算每一行能顯示多少個(gè)文字來計(jì)算有多少行,不過能顯示個(gè)大概就行,多幾行空白應(yīng)該不會(huì)有太大的影響吧。
總結(jié)
到此這篇關(guān)于C# Winform文本面板帶滾動(dòng)條實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# Winform文本面板滾動(dòng)條內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)簡(jiǎn)易灰度圖和酷炫HeatMap熱力圖winform(附DEMO)
本文主要介紹了C#實(shí)現(xiàn)簡(jiǎn)易灰度圖和酷炫HeatMap熱力圖winform(附DEMO),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12.NET實(shí)現(xiàn):將EXE設(shè)置開機(jī)自動(dòng)啟動(dòng)
.NET實(shí)現(xiàn):將EXE設(shè)置開機(jī)自動(dòng)啟動(dòng)的方法,需要的朋友可以參考一下2013-03-03C#中datagridview使用tooltip控件顯示單元格內(nèi)容的方法
這篇文章主要介紹了C#中datagridview使用tooltip控件顯示單元格內(nèi)容的方法,實(shí)例分析了C#控件的相關(guān)使用技巧,需要的朋友可以參考下2016-06-06C#實(shí)現(xiàn)根據(jù)給出的相對(duì)地址獲取網(wǎng)站絕對(duì)地址的方法
這篇文章主要介紹了C#實(shí)現(xiàn)根據(jù)給出的相對(duì)地址獲取網(wǎng)站絕對(duì)地址的方法,涉及C#URL及字符串操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03C#導(dǎo)出Excel的幾種常見方式及詳細(xì)實(shí)現(xiàn)步驟
excel導(dǎo)出在C#代碼中應(yīng)用己經(jīng)很廣泛了,我這里就做些總結(jié),下面這篇文章主要給大家介紹了關(guān)于C#導(dǎo)出Excel的幾種常見方式及詳細(xì)實(shí)現(xiàn)步驟的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06C#實(shí)現(xiàn)定義一套中間SQL可以跨庫執(zhí)行的SQL語句(案例詳解)
這篇文章主要介紹了C#實(shí)現(xiàn)定義一套中間SQL可以跨庫執(zhí)行的SQL語句,主要包括hisql查詢樣例、group by查詢、鏈?zhǔn)讲樵兗癶isql語句和鏈?zhǔn)讲樵兓煊玫膕ql語句,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07