/// <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 内容 动态 重设其大小 以达到 不会 显示滚动条的更多相关文章

  1. Ubuntu 12.04 root账户开启及密码重设

    以普通用户登录,root账号的开启.关闭和密码设置,命令如下: sudo passwd -u root # 启用root账户 sudo passwd root # 设置root 密码(包括重设) su ...

  2. Android -- 重设字符并统计原字符以及修改字符的长度以及位置

    1. 效果图

  3. margin-bottom无效问题以及div里内容动态居中样式!

    最近调前端样式时候,遇到一个需求,在中间文字不对等的情况下想让下面的操作文字距离底部对齐,如图: , 刚开始觉得使用margin-bottom就可以,后来发现只有margin-top是管用的,查了资料 ...

  4. GitLab 密码重设

    内容全部来自: CSDN bisal GitLab 密码重设方法 假设注册邮箱为: abc@test.com 步骤 1) 登录 git 服务器 2) 执行: gitlab-rails console ...

  5. CSS 重设文章

    CSS 重设 http://blog.bingo929.com/css-reset-collection.html

  6. 【转】}目前比较全的CSS重设(reset)方法总结

    在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的视 ...

  7. css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类。自己留存

    今天发下我自己的 css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类. @charset "utf-8"; /*! * @名称:base.css * @功能 ...

  8. 目前比较全的CSS重设(reset)方法总结

    在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是 重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的 ...

  9. Webserver管理系列:9、创password重设盘

    网络时代需要记录password太多.一不留神可能会忘记.是否server的password忘记将是一件非常麻烦的事情. Windows Server 2008 它为我们创造password重设盘功能 ...

  10. 忘记root密码时如何重设密码

    哈哈,太久没用linux了,把自己的登陆密码给忘了.今天找了下方法如何重设密码以登陆系统. 此文仅以作备忘. 忘记linux密码时,可以使用单用户模式进入linux,修改root密码.1.在linux ...

随机推荐

  1. 大规模并行处理器编程实战_原书第2版_pdf

    链接:https://pan.baidu.com/s/1c8ez8dCTz5bUQchwhXAF7w 提取码:tc1f

  2. 记录解决方案(sqlserver篇)

    一个月的补卡次数不超过三次(即统计一个月内某人的补卡次数) 表结构是某人一天内的四次打卡状态,这样是统计当月补卡的天数了(错误) select count(*) from [Proc_HR_Punch ...

  3. C# Linq查本集合中不包含于另一个集合的元素

    public void Linq() { List<Product> products = GetProductList(); List<Customer> customers ...

  4. golang_nethttp

    package main import ( "encoding/json" "fmt" "log" "net/http" ...

  5. HDLbits——Lfsr5

    Build this LFSR. The reset should reset the LFSR to 1 module top_module( input clk, input reset, // ...

  6. vue界面显示无效的token

    返回登陆界面,重新登陆 登陆成功

  7. 第八章:diff

    1.git  diff命令的格式 1]可以使用git  diff命令的来源,(任意树对象.工作目录.索引) 2]git  diff命令进行树比较时,可以通过(提交名.分支名.标签名) 3]git  d ...

  8. Vue3.0 编译做了哪些优化

    a. 生成 Block tree Vue.js 2.x 的数据更新并触发重新渲染的粒度是组件级的,单个组件内部 需要遍历该组 件的整个 vnode 树.在 2.0 里,渲染效率的快慢与组件大小成正相关 ...

  9. HDFS学习记录

    HDFS 1.hdfs整体工作机制: 1>hdfs:分布式文件系统. hdfs:分布式文件系统 hdfs有着文件系统共同的特征: 2>有目录结构,顶层目录是:  / 3>系统中存放的 ...

  10. linux(centos7)下部署jenkins

    1.安装jdk yum install -y java 确保已经安装了jdk,查看是否安装jdk命令参考地址: 2.安装jenkins 2.0添加Jenkins库到yum库,Jenkins将从这里下载 ...