C# richTextbox的字体格式和颜色

【关于字体格式】

设置的是第一个字符的颜色,这时richtextBox的rtf中记录下位置0的颜色,重置text时,在rtf中的位置从位置0开始,因此颜色还是Color.Red,第三次也应该同样如此

richTextBox1.Text = "123";
richTextBox1.Select(0, 1);
richTextBox1.SelectionColor = Color.Red;
richTextBox1.Clear();//清除文本,包括样式
//或richTextBox1.Text="";
richTextBox1.Text = "abc";
richTextBox1.Text = "efg";

这样重置后的文本颜色就会是黑色.

【关键字着色】

public partial class RichTextBox : Form
  ...{
    public RichTextBox()
    ...{
       InitializeComponent();
     }
    private void tSql_TextChanged(object sender, EventArgs e) //文本框改变事件
    ...{
      int index = this.tSql.SelectionStart;  //记录修改的位置
      this.tSql.SelectAll();
      this.tSql.SelectionColor = Color.Black;
      string[] keystr =...{ "select ", "from ", "where ", " and ", " or ", " order ", " by ", " desc ", " when ", " case ",
  " then ", " end ", " on ", " in ", " is ", " else ", " left ", " join ", " not ", " null " };
      for (int i = 0; i < keystr.Length; i++)
        this.getbunch(keystr[i], this.tSql.Text);
      this.tSql.Select(index, 0);   //返回修改的位置
      this.tSql.SelectionColor = Color.Black;
     }
    public int getbunch(string p, string s) //给关键字上色
    ...{
      int cnt = 0; int M = p.Length; int N = s.Length;
      char[] ss = s.ToCharArray(), pp = p.ToCharArray();
      if (M > N) return 0;
      for (int i = 0; i < N - M + 1; i++)
      ...{
        int j;
        for (j = 0; j < M; j++)
        ...{
          if (ss[i + j] != pp[j]) break;
         }
        if (j == p.Length)
        ...{
          this.tSql.Select(i, p.Length);
          this.tSql.SelectionColor = Color.Blue;
           cnt++;
         }
       }
      return cnt;
     }
   }

【绘制颜色提议】

最好的做法是继承RichTextBox,重载新类的Paint方法。

并且在设置SelectionLength的时候,禁止控件的重绘过程,这样才不会出现被语法高亮的文本有一个突然选中的过程。

以下2个方法将会对你解决这一问题有很大的帮助.

[DllImport("user32")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, IntPtr lParam);
private const int WM_SETREDRAW = 0xB;
//停止控件的重绘
private void BeginPaint()
{
SendMessage(yourRichTextBox.Handle, WM_SETREDRAW, 0, IntPtr.Zero);
}
//允许控件重绘.
private void EndPaint()
{
SendMessage(yourRichTextBox.Handle, WM_SETREDRAW, 1, IntPtr.Zero);
yourRichTextBox.Refresh();
}

时间: 2024-09-17 00:00:01

C# richTextbox的字体格式和颜色的相关文章

在SWT中使用OLE操作Excel(五):设置单元格的字体格式

设置字体格式是常见的需求 package com.jrkui.example.excel; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.ole.win32.OLE; import org.eclipse.swt.ole.win32.OleAutomation; import org.eclipse.swt.ole.win32.OleClientSite;

word怎么设置字体格式?

  word怎么设置字体格式? 1.字体设置:右键字体工具栏设置文档的字体. 2.字号设置:右键字体设置中进行字号设置进行设置. 3.文字颜色选择:右键字体设置中单击字体颜色的下拉按钮进行选择. 4.字形设置:在开始的对话框中进行字形的设置.如加粗,下划线,倾斜等. 5.字符缩放的设置:改变字符的宽高比例,对其进行拉长或压扁,宽高比用百分数来标示,默认100%. 6.对齐方式的设置:选择左对齐.右对齐等. 7.段间距与行间距的设置,在格式工具栏上有行距按钮,可快速设置,另可以再段落对话设置段间距

如何修改Excel2010表格字体格式?

  1.打开Excel表格,选中需要修改字体格式的内容,我们就可以在工具栏看到相关的选项,就可以对字体.字号.颜色已经主题颜色等相关数据进行修改. 2.如果觉得工具栏的选择满足不了我们的需求,我们可以右键需要修改字体格式的内容,然后选择"设置单元格格式" 3.在单元格格式里我们可以对字体格式进行更进一步的修改.

显示-highcharts饼状图设置字体格式问题

问题描述 highcharts饼状图设置字体格式问题 我在 plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', depth: 35, dataLabels: { enabled: true, format: '{point.name}', fontSize:'20px', color:'red' } } } 中设置了字体的颜色和大小,只有颜色能显示,但是大小不管用,另外我想设置字体样式为宋体,这个该怎么设置? 解决方案

linux BASH shell下设置字体及背景颜色_linux shell

BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

Web字体格式介绍及浏览器兼容性一览

目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字体逐渐成为话题,这项让未来Web更加丰富多彩的技术拥有多种实现方案,其中之一是通过@font-face属性在网页中嵌入自定义字体,主流的浏览器都支持这项技术,本文介绍主要的几种Web字体格式及各浏览器兼容情况. Web字体格式介绍TrueType (.ttf) Windows和Mac系统最常用的字体格式,其最大的特点就是它是由一种数学模式来进行定义的基于轮廓技术的字体,这使得它们比基于矢量的字体更容易处理,保证了屏幕与打印输

colors-添加字符串格式后颜色丢失

问题描述 添加字符串格式后颜色丢失 在textView中添加一些文本,有一些是红色另一些是黑色: Spannable wordtoSpan = new SpannableString(temp.substring(start, i)); wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 0, wordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //failedToSolve

word如何修改字体的大小颜色?

  word如何修改字体的大小颜色?             1.打开需要设置的WORD文档,然后选择好需要设置的内容 如图 2.选择好需要设置的内容之后,我们点击字体那里,勾选你需要的字体 如图 3.选择好字体之后,我们设置下字体的大小 初号是最大的 ,小五是最小的 如图 4.我们还可以设置字体的粗细,还有斜体 如图 5.也可以设置内容字体的文章排列位置,靠左,靠中,靠右等 如图 6.最后一步是,我们可以设置字体的颜色,点击颜色后面的倒三角,就可以看到很多的颜色选择,这个大家根据自己的需求去操

Google Chrome将支持Web开放字体格式

近日,Chrome 浏览器项目的一条BUG 跟进消息显示,Google Chrome 浏览器有意部署Web 开放字体格式,不过,该消息并没说明Chrome何时推出该功能.Web开放字体格式由Mozilla发起,旨在让设计者在Web中使用自己的个性字体. Web开放字体格式允许设计者象链接图片那样链接自己的字体文件,并使用该字体显示文字.Web 开放字体格式是为了解决CSS3的@font-face 功能的问题,@font-face 允许浏览器下载指定的字体,但并没有指明字体的格式,使用@font-