C# 根据 RichTextBox 内容 动态 重设其大小 以达到 不会 显示滚动条
/// <summary>
/// 根据内容重设大小以达到不会显示滚动条
/// 测试:正确
/// 时间:202106021957
/// </summary>
public class ReSizer
{
static int padBtm = 6;//此值基本合适不会出现滚动条[至少字体在 rtb 默认字体属性时]
static int padRit = 20; RichTextBox rtb;
Rectangle rtg; bool isIni = false;
bool reWid = true, reHei=true;
int idx; List<RichTextBox> rtbL;// = new List<RichTextBox>();
/// <summary>
/// 获取需要增设的 rtb
/// </summary>
public RichTextBox IAddRtb
{
set
{
idx = rtbL.IndexOf(value);
if (idx > -1)
return; ICalAddRtb(value);
}
}
public ReSizer()
{
rtbL = new List<RichTextBox>();
}
public ReSizer(bool reWid, bool reHei)
{
this.reWid = reWid;
this.reHei = reHei;
rtbL = new List<RichTextBox>();
}
public ReSizer(RichTextBox rtb, bool reWid, bool reHei)
{
this.reWid = reWid;
this.reHei = reHei;
rtbL = new List<RichTextBox>(); ICalAddRtb(rtb);
}
/// <summary>
/// 添加需要增设的 rtb
/// </summary>
/// <param name="rtb"></param>
public void ICalAddRtb(RichTextBox rtb)
{
#region rtb.Margin = new Padding(0);
rtb.MouseDown += _MouseDown; if (reWid)
{
rtb.WordWrap = false;
if (reHei)
{
rtb.ScrollBars = RichTextBoxScrollBars.None;
rtb.ContentsResized += _ContentsResized;
}
else
{
rtb.ScrollBars = RichTextBoxScrollBars.Vertical;
rtb.ContentsResized += _ContentsResizedWid;
}
}
else if (reHei)
{
rtb.WordWrap = true;
rtb.ScrollBars = RichTextBoxScrollBars.Horizontal;
rtb.ContentsResized += _ContentsResizedHei;
} rtbL.Add(rtb); #endregion
}
/// <summary>
/// 清除记录的 rtb
/// </summary>
public void ICalIniRtbL()
{
rtbL.Clear();
} #region private void _MouseDown(object sender, MouseEventArgs e)
{
rtb = sender as RichTextBox; if (!isIni)
isIni = true;
}
private void _ContentsResized(object sender, ContentsResizedEventArgs e)
{
if (!isIni)
return; rtg = e.NewRectangle;
//rtb.Size = rtg.Size;//用此行会出现向上隐藏一行...
rtb.Height = rtg.Height + padBtm;
rtb.Width = rtg.Width + padRit;
}
private void _ContentsResizedHei(object sender, ContentsResizedEventArgs e)
{
if (!isIni)
return; rtg = e.NewRectangle;
rtb.Height = rtg.Height + padBtm;
}
private void _ContentsResizedWid(object sender, ContentsResizedEventArgs e)
{
if (!isIni)
return; rtg = e.NewRectangle;
rtb.Width = rtg.Width + padRit;
} #endregion
}
使用方法:
1.实例化: ReSizer reSizer=new ReSizer();
2.添加需要设置此类功能的 RichTextBox 方式:
a.通过属性:IGetAddRtb=richTextBox1;
b.通过函数:ICalAddRtb(richTextBox1);
3.清除已记录的添加此类功能的 RichTextBox 列表:ICalIniRtbL();
技术参考网址:
https://www.cnblogs.com/sdner/p/8329280.html
https://blog.csdn.net/gooodiuck/article/details/39291385
交流 QQ : 2412366909@qq.com
手机号码:177-7499-4428
注: 1,本人使用过程中暂未发现造成存取不正确的问题
2.此类应该有此可以优化的地方,即在什么情况下才 reSiz...
C# 根据 RichTextBox 内容 动态 重设其大小 以达到 不会 显示滚动条的更多相关文章
- Ubuntu 12.04 root账户开启及密码重设
以普通用户登录,root账号的开启.关闭和密码设置,命令如下: sudo passwd -u root # 启用root账户 sudo passwd root # 设置root 密码(包括重设) su ...
- Android -- 重设字符并统计原字符以及修改字符的长度以及位置
1. 效果图
- margin-bottom无效问题以及div里内容动态居中样式!
最近调前端样式时候,遇到一个需求,在中间文字不对等的情况下想让下面的操作文字距离底部对齐,如图: , 刚开始觉得使用margin-bottom就可以,后来发现只有margin-top是管用的,查了资料 ...
- GitLab 密码重设
内容全部来自: CSDN bisal GitLab 密码重设方法 假设注册邮箱为: abc@test.com 步骤 1) 登录 git 服务器 2) 执行: gitlab-rails console ...
- CSS 重设文章
CSS 重设 http://blog.bingo929.com/css-reset-collection.html
- 【转】}目前比较全的CSS重设(reset)方法总结
在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的视 ...
- css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类。自己留存
今天发下我自己的 css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类. @charset "utf-8"; /*! * @名称:base.css * @功能 ...
- 目前比较全的CSS重设(reset)方法总结
在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是 重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的 ...
- Webserver管理系列:9、创password重设盘
网络时代需要记录password太多.一不留神可能会忘记.是否server的password忘记将是一件非常麻烦的事情. Windows Server 2008 它为我们创造password重设盘功能 ...
- 忘记root密码时如何重设密码
哈哈,太久没用linux了,把自己的登陆密码给忘了.今天找了下方法如何重设密码以登陆系统. 此文仅以作备忘. 忘记linux密码时,可以使用单用户模式进入linux,修改root密码.1.在linux ...
随机推荐
- mybatis-关联查询2-多对一关联查询
或者多表单独查询方式
- win7安装AutoCAD2019
1.Win7专业版64位先安装SP1补丁 2.根证书下载 MicrosoftRootCertificateAuthority2011.cer 链接:http://go.microsoft.com/fw ...
- 安装git-lfs
git大文件报错: smudge filter lfs failedwarning: 克隆成功,但是检出失败.您可以通过 'git status' 检查哪些已被检出,然后使用命令'git checko ...
- Java-面向对象进阶 方法继承、重写
1.继承 子类继承父类后自动拥有父类非私有的属性和方法 Java中,一个父类可以被多个子类继承,一个子类只能继承一个父类 除了继承父类的属性和方法外,子类还拥有自己特有的属性和方法 如果子类的方法与父 ...
- 理解cpu过高的逻辑思维与分析方法
工作经常碰到负载过高,cpu占有太高,系统变慢,运维通常做的第一件事就是通过top或者uptime命令来了解系统负载的情况 通常uptime后会出现三个小数,就是平均负载值,那真正的了解这个平均负载值 ...
- dp泄露
DP泄露 选了三道与RSA的dp泄露有关的题,dp泄露算是比较有辨识度的题型. 目录 DP泄露 原理 ctfshow funnyrsa3 分析 解答 BUUCTF RSA2 分析 解答 [羊城杯 20 ...
- 爬取白鲸nft排名前25项目,持有nft大户地址数据。
https://moby.gg/rankings?tab=Market SELECT address '钱包地址', COUNT (1) '持有nft项目数', SUM (balance) '持有nf ...
- 尝试在Ubuntu中安装Emacs遇到的问题
出现具体问题 今日学习安装emacs在Ubuntu19.04当中 安装详见下方帖子: 链接: 如何在Ubuntu中安装Emacs. 安装遇到问题,即 sudo add-apt-repository p ...
- 【python学习】数据结构第一节
1.访问元组或列表中的值 (注:元素是从0开始从左往有编号的,或者从右向左编号[-1开始]) 列表 x1 = [1,2,3,4] 元组 x2 =(1,2,3,4) print(x2[0]) ...
- spring注解SQL注意事项
目前有两个类:机构.职员 package com.common.vo; public class Org{ public long id; public String name; public Str ...