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 ...
随机推荐
- Netty Reactor模型
1.netty抽象出两个线程池:BossGroup负责监听和建立连接 :WorkerGroup 负责网络IO的读写 2.BossGroup 和 WorkerGroup 类型都是NioEventLoop ...
- fiddler 调试
如果本地代理js发现跨域,需要手动修改自定义规则 1 static function OnBeforeResponse(oSession: Session) { 2 if (m_Hide304s &a ...
- cv::eigen
void TestEigen() { cv::Mat m = (cv::Mat_<float>(3, 3) << 1, 2, 3, 2, 5, 6, 3, 6, 7); cv: ...
- 90、java ftp 读取文件
https://blog.csdn.net/qq_38380025/article/details/80679128
- nginx的nginx.conf配置文件如何修改代理的路由
方法 location /api/ { set $request_uri_new $request_uri; if ($request_uri ~ "^/api/(.*)$") { ...
- Path类,文件操作的路径用法
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- java-正确打日志
使用 slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一. 实现方式统一使用: Logback 框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过 debu ...
- Jquery_001
jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...
- ubuntu64运行32位程序安装过程
Ubuntu运行32位程序可以使用如下方法: 第一步: 确认你有一个64位架构的内核 你可以打开终端然后输入: dpkg --print-architecture 你将会看到像下面这样的内容: amd ...
- Dos基本命令及批处理
如何操作DOS命令: 开始----运行----cmd----回车: win+R------运行----cmd----回车: 基本命令: 1.命令:color f0 color ? 寻求帮助 改变背景 ...