WinForm RichTextBox 常用操作

Posted SpringSun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm RichTextBox 常用操作相关的知识,希望对你有一定的参考价值。

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

winform RichTextBox 控件

RichTextBox:

技术图片

 

常用的格式化文本方法:

1. 加粗

            Font newFont;
            var oldFont = this.richTextBox1.SelectionFont;

            if (oldFont.Bold)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);
            }
            this.richTextBox1.SelectionFont = newFont;
            this.richTextBox1.Focus();

 

2. 斜体

            Font newFont;
            var oldFont = this.richTextBox1.SelectionFont;

            if (oldFont.Italic)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
            }
            this.richTextBox1.SelectionFont = newFont;
            this.richTextBox1.Focus();

 

3. 下划线

            Font newFont;
            var oldFont = this.richTextBox1.SelectionFont;

            if (oldFont.Underline)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);
            }
            this.richTextBox1.SelectionFont = newFont;
            this.richTextBox1.Focus();

 

4. 大小

            var fontFamily = this.richTextBox1.SelectionFont.FontFamily;
            var newFont = new Font(fontFamily, 20);
            this.richTextBox1.SelectionFont = newFont;
            this.richTextBox1.Focus();

 

5. 对齐方式

            this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;

 

6. 保存及打开

            this.richTextBox1.SaveFile("aa.rtf");
            this.richTextBox1.LoadFile("aa.rtf");

以上是关于WinForm RichTextBox 常用操作的主要内容,如果未能解决你的问题,请参考以下文章

C#常用控件说明

在C# winform中使用 richtextbox 向access保存及读取 图文混排数据(有源码,帮忙改一下)

C# winform中richTextBox中自动滚至底部

winform中如何禁止richtextbox的自动滚动

WinForm richtextbox 关键字变红色

C#/.net WinForm如何做一个背景透明的RichTextBox