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);
}
}
}
  • 测试效果

最新文章

  1. codegate-quals-2013-vuln100
  2. 连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
  3. [html] 有利于seo优化的div+css命名规范
  4. html标题上加上小图标
  5. Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use
  6. vc获取特殊路径(SpecialFolder)
  7. tomcat 禁止某些文件(夹)的访问
  8. ibatis面试笔记
  9. Spring MVC 解读——@RequestMapping (2)(转)
  10. Linux Shell编程(23)——文本处理命令
  11. 【POJ2186】受牛仰慕的牛
  12. C++ : 从栈和堆来理解C#中的值类型和引用类型
  13. img标签在div中水平垂直居中--两种实现方式
  14. [NOIP复习]第三章:动态规划
  15. Mina源码阅读笔记(五)—Mina对连接的操作IoSession
  16. jquery只获取自身文本节点,不获取子元素的
  17. Reachability from the Capital CodeForces - 999E (强连通)
  18. Django路由分配及渲染
  19. 加入ffmpeg播放视屏
  20. 剑指offer例题——反转链表

热门文章

  1. BUUCTF-[网鼎杯 2020 青龙组]AreUSerialz
  2. LVS实现(VS/DR)负载均衡和Keepalived高可用
  3. vue 输入框禁止输入空格 ,只能输入数字,禁止输入数字
  4. Python习题集(五)
  5. Linux 动态库的编译和使用
  6. 计算机网络参考模型和5G模型的那些事
  7. [ Skill ] Cadence Skill 语言入门
  8. MSSQL2008 无法分配空间,因为PRIMARY文件组已满
  9. Ts基本数据类型
  10. ecshop刷新页面出现power by ecshop和链接的解决办法