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 ...
随机推荐
- 大规模并行处理器编程实战_原书第2版_pdf
链接:https://pan.baidu.com/s/1c8ez8dCTz5bUQchwhXAF7w 提取码:tc1f
- 记录解决方案(sqlserver篇)
一个月的补卡次数不超过三次(即统计一个月内某人的补卡次数) 表结构是某人一天内的四次打卡状态,这样是统计当月补卡的天数了(错误) select count(*) from [Proc_HR_Punch ...
- C# Linq查本集合中不包含于另一个集合的元素
public void Linq() { List<Product> products = GetProductList(); List<Customer> customers ...
- golang_nethttp
package main import ( "encoding/json" "fmt" "log" "net/http" ...
- HDLbits——Lfsr5
Build this LFSR. The reset should reset the LFSR to 1 module top_module( input clk, input reset, // ...
- vue界面显示无效的token
返回登陆界面,重新登陆 登陆成功
- 第八章:diff
1.git diff命令的格式 1]可以使用git diff命令的来源,(任意树对象.工作目录.索引) 2]git diff命令进行树比较时,可以通过(提交名.分支名.标签名) 3]git d ...
- Vue3.0 编译做了哪些优化
a. 生成 Block tree Vue.js 2.x 的数据更新并触发重新渲染的粒度是组件级的,单个组件内部 需要遍历该组 件的整个 vnode 树.在 2.0 里,渲染效率的快慢与组件大小成正相关 ...
- HDFS学习记录
HDFS 1.hdfs整体工作机制: 1>hdfs:分布式文件系统. hdfs:分布式文件系统 hdfs有着文件系统共同的特征: 2>有目录结构,顶层目录是: / 3>系统中存放的 ...
- linux(centos7)下部署jenkins
1.安装jdk yum install -y java 确保已经安装了jdk,查看是否安装jdk命令参考地址: 2.安装jenkins 2.0添加Jenkins库到yum库,Jenkins将从这里下载 ...