WinForm RichTextBox 常用操作
2024-08-23 12:45:13
1、设置不自动选择字词
RichTextBox在选择文字的时候,如果没有关闭自动选择字词功能,我们有时候选择的时候会自动将光标前后的字或者词连接在一起进行选择。
RichTextBox有属性AutoWordSelection
设置为false
但是不起作用,需要在窗体的load或者加载后设置才能起作用。
private void Form_Load(object sender, EventArgs e)
{
//去除RichTextBox自动选择字词
richtextbox1.AutoWordSelection=false;
}
2、取得已被选中的内容
richtextbox1.SelectedText
3、代码选中文字,并对选中文字修改颜色
//选中要改变颜色的文字
richtextbox1.Select(position, length);
//修改选中文字颜色
richtextbox1.SelectionColor = Color.Red;
4、自动滚动滚动条到光标位置
//让RichTextBox获得焦点
richtextbox1.Select();
//将光标位置在RichTextBox的最后
richtextbox1.Select(richtextbox1.TextLength,0);
//滚动条滚动到光标位置
richtextbox1.ScrollToCaret() ;
5、设置是否自动换行
设置RichTextBox的 WordWrap
属性,true
为自动换行,false
为不自动换行。
6、接受tab键
设置 AcceptsTab
属性为 True
7、RichTextBox特殊符号输入辅助窗体
- 首先建一个Winform窗体
spcalCharWindow
用于显示特殊符号辅助窗体,设置TopMost = true
。
- 在窗体里面用ListView 显示特殊符号。
private void spcalCharWindow_Load(object sender, EventArgs e)
{
lv1.MultiSelect = false;
lv1.Scrollable = true;
StringBuilder sb = new StringBuilder(200);
sb.Append("①②③④⑤⑥⑦⑧⑨⑩");
sb.Append("αβγδεζηφωοπθικλμνξχΩ");
sb.Append("ρστυψАБВГДЕЁЖЗИЙКЛМО");
sb.Append("НПРСⅨⅩⅪⅫⅧⅦⅥⅤⅣⅢⅡⅠЯЮЭТ");
sb.Append("УФХЦЬЪЧШЩ≈≡≠≤≥≮≯<>±+");
sb.Append("-×÷/∫∮∝∞∷∧∨∑∏∪∩∈∵∴⊥");
sb.Append("∠⌒⊙≌∽√°′″$£¥‰%℃¤¢§№");
sb.Append("△→←↑↓♂♀■");
sb.Append("ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧÀÁÂÃÅÄÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÖÕØÙÚÛÜÝÞŠŸŒ");
sb.Append("àáâãäåæçèéêëìíîïðñòóõôöøùúûüýþšÿœ");
sb.Append("āáǎàōóǒòêńēéěèīíǐìňūúǔùǖǘǚǜü"); //拼音注音
for (int i = 0; i < sb.Length; i++)
{
lv1.Items.Add(sb[i].ToString());
lv1.Items[i].Tag = sb[i].ToString();
}
}
- 在窗体中定义一个
public Action<string> InputeSpecal
委托。 - 点击生僻字辅助按钮后,弹出窗体,注册委托事件
InputeSpecal
。
private void btnSpecailChar_Click(object sender, EventArgs e)
{
SpcalCharWindow spcalCharWindow = new SpcalCharWindow();
spcalCharWindow.InputeSpecal = (str) =>
{
//我的是在一个容器里面找到当前激活的RichTextBox,这个逻辑不用参照
var activeControl = splitContainerTitle.ActiveControl;
if (activeControl != null && activeControl is RichTextBox)
{
//将生僻字赋值到粘贴板上,
Clipboard.SetText(str);
//找到激活RichTextBox
var activeRichTextBox = activeControl as RichTextBox;
//通过Paste粘贴过去,因为我们的光标在辅助窗体上,所以无法获得RichTextBox的光标位置
//这一步是实现 不用RichTextBox获得光标的关键,因为获得光标会使住窗体和辅助窗体切换,体验极差
activeRichTextBox.Paste();
}
};
spcalCharWindow.Show(this);
}
- ListView 点击事件
private void lv1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lv1.SelectedItems.Count > 0)
{
string str = lv1.SelectedItems[0].Tag.ToString();
if (!string.IsNullOrEmpty(str))
{
InputeSpecal?.Invoke(str);
}
}
}
- 测试效果
最新文章
- codegate-quals-2013-vuln100
- 连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
- [html] 有利于seo优化的div+css命名规范
- html标题上加上小图标
- Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use
- vc获取特殊路径(SpecialFolder)
- tomcat 禁止某些文件(夹)的访问
- ibatis面试笔记
- Spring MVC 解读——@RequestMapping (2)(转)
- Linux Shell编程(23)——文本处理命令
- 【POJ2186】受牛仰慕的牛
- C++ : 从栈和堆来理解C#中的值类型和引用类型
- img标签在div中水平垂直居中--两种实现方式
- [NOIP复习]第三章:动态规划
- Mina源码阅读笔记(五)—Mina对连接的操作IoSession
- jquery只获取自身文本节点,不获取子元素的
- Reachability from the Capital CodeForces - 999E (强连通)
- Django路由分配及渲染
- 加入ffmpeg播放视屏
- 剑指offer例题——反转链表