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 ...
随机推荐
- mysql掉电后重启失败问题
报错 2022-12-07T01:41:02.844533Z 0 [ERROR] InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOIN ...
- 清空buff/cache
https://blog.csdn.net/qq_34246965/article/details/109258656 1)清理pagecache(页面缓存)echo 1 > /proc/sys ...
- [AGC033C] Removing Coins
个人思路: 每轮会删掉除选定节点外的所有叶子节点. 黑白染色,但是不会推 SG 函数. 然后就不会了. 正解: 每次直径长度 \(-1\) 或 \(-2\).\(0\) 必胜,\(1\) 必败,\(2 ...
- FTP为什么越来越不好用了?要如何替代?
FTP相信很多人都不陌生,作为世界范围内第一个文件传输协议,FTP解决了互联网文件传输需求,至今已被广泛使用30多年.但很多人现在慢慢发现,FTP越来越不好用了,或者说越来越无法满足自己需求了,这是为 ...
- antDesignVue表格
<template> <a-table :pagination="ipagination" @change=" ...
- python_列表和元组的转换
1, 通过list函数将元组的数据获取到,保存到新定义的列表里面.备注:元组的数据不会更改. info_tuple = ("小明", 24, 1.75) info_list = l ...
- JAVA XML转对象
最近遇到XML转对象进行业务操作的问题 这是我需要解析的XML 1,建XML对应自己需要参数的Bean.有的很长很乱,没必要全部建,只建自己需要的就行了 import lombok.Data; imp ...
- mongodb删除指定字段
db.getCollection('geoServer').update({},{$unset:{longitude:null,latitude:null}},{ multi: true}) 实测有效 ...
- mysql 正则匹配不规则日期
where colum4 REGEXP "^[[:digit:]]{1}/[[:digit:]]{1}/[[:digit:]]{4}"=1 -- 2/3/2021 wher ...
- ES7-ES12总结篇
脑图模式 插入 ES7-ES12 ES7 Array.prototype.includes() includes() 方法用来判断一个数组是否包含一个指定的值,如果包含则 ...