C#?Winform文本面板帶滾動條的實現(xiàn)過程
Winform 中如果需要在一個固定大小的面板中顯示一些內(nèi)容,并且面板能上下拖動,將所有的內(nèi)容完整的展示,這種需求很常見,下面就演示如何實現(xiàn)的吧
效果:

1.新建一個winform 項目,在界面中拖入一個Panel

將 panel1 的 AutoScroll 設(shè)置為 True

2.再次拖入一個 Panel ,將高度拉長,這時就自動出現(xiàn)了滾動條,只是此時里面還沒有任何內(nèi)容,下面就在 panel2 中加入一點內(nèi)容。

3.在 panel2 中加入一個 Label ,將 AutoSize 設(shè)置為 false

這時,就可以調(diào)整 label 的大小了

將 label1 大小設(shè)置成 panel2 的大小一樣,并且,將位置坐標(biāo)的 x,y 都設(shè)置為0

隨便打一點字,運行后,用鼠標(biāo)中輪滾動,就能看到滾動效果了

當(dāng)前的控件擋住了后面的控件,點擊不到,就無法修改它的屬性,這里分享一個小技巧,我們找到屬性界面:

找到圖中的這個下拉框, 直接在下拉框進(jìn)行切換就好了

4.此時 panel 的大小是固定的,如果有的內(nèi)容非常的長,有的比較短,這樣顯示要么會導(dǎo)致部分內(nèi)容看不到,要么就會有大量的空白部分,這個時候,我們就需要有能自動調(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)換為一個標(biāo)準(zhǔn)的 Json 模板樣式,
Regex.Split 是根據(jù)換行符號,來分割 json ,得到 json 的總行數(shù),以便確定 Panel 的行高,得到行高后,就能確定大概的高度了,后面通過 Size 的調(diào)整,就能根據(jù)文本的內(nèi)容,來確定大概的行高了。
不過這種方式,只能在有換行符的內(nèi)容中,如果內(nèi)容像新聞一樣,幾千字都沒有一個換行符就稍微麻煩一點,需要計算每一行能顯示多少個文字來計算有多少行,不過能顯示個大概就行,多幾行空白應(yīng)該不會有太大的影響吧。
總結(jié)
到此這篇關(guān)于C# Winform文本面板帶滾動條實現(xiàn)的文章就介紹到這了,更多相關(guān)C# Winform文本面板滾動條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#數(shù)據(jù)結(jié)構(gòu)之最小堆的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#數(shù)據(jù)結(jié)構(gòu)之最小堆的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Visual Studio連接unity編輯器的實現(xiàn)步驟
unity編輯器中打開C#腳本的時候發(fā)現(xiàn)Visual Studio沒有連接unity編輯器,本文主要介紹了Visual Studio連接unity編輯器的實現(xiàn)步驟,感興趣的可以了解一下2023-11-11
Winform讓DataGridView左側(cè)顯示圖片
本文主要介紹在如何讓DataGridView左側(cè)顯示圖片,這里主要講解重寫DataGridView的OnRowPostPaint方法,需要的朋友可以參考下。2016-05-05
Winform學(xué)生信息管理系統(tǒng)主頁面設(shè)計(2)
這篇文章主要為大家詳細(xì)介紹了Winform學(xué)生信息管理系統(tǒng)主頁面設(shè)計思路,感興趣的小伙伴們可以參考一下2016-05-05
WPF實現(xiàn)Interaction框架的Behavior擴(kuò)展
這篇文章介紹了WPF實現(xiàn)Interaction框架Behavior擴(kuò)展的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
C#遞歸實現(xiàn)顯示文件夾及所有文件并計算其大小的方法
這篇文章主要介紹了C#遞歸實現(xiàn)顯示文件夾及所有文件并計算其大小的方法,是遍歷算法中比較典型的一種應(yīng)用,有不錯的學(xué)習(xí)借鑒價值,需要的朋友可以參考下2014-08-08

