RichTextBox替换文字并改变字体颜色

替换文字

private void GenerateEntity()
{
    try
    {
        string result = ChangeWords("specific content...");
        txtContent.Text = result;
        ChangeColor();
    }
    catch (Exception ex)
    {
        MessageBox.Show("类生成失败!错误信息:" + ex.Message);
    }
}
private string ChangeWords(string content)
{
    //先替换"nvarchar"、"varchar"、"nchar",再替换"char"
    //不然"nvarchar"、"varchar"、"nchar"就会被替换为
    //nvarstring"、"varstring"、"nstring"不能进行原有规则替换
    string result = Regex.Replace(content, "nvarchar", "string");
    //进行下一步替换的时一定要以上一步替换的返回结果为数据源而不是content
    //因为content值没有改变
    result = Regex.Replace(result, "varchar", "string");
    result = Regex.Replace(result, "nchar", "string");
    result = Regex.Replace(result, "char", "string");
    result = Regex.Replace(result, "tinyint", "int");
    result = Regex.Replace(result, "smallint", "int");
    result = Regex.Replace(result, "bigint", "int");
    result = Regex.Replace(result, "datetime", "DateTime");
    return result;
}

改变字体颜色

要改变字体颜色一定要使用RichTextBox,普通的文本框不能实现为某些特殊文字添加颜色的功能。

private void ChangeColor()
{
    txtContent.SelectionStart = 0;
    txtContent.SelectionLength = txtContent.Text.Length;
    txtContent.SelectionColor = Color.Black;
    //列注释不为空时,改变列注释颜色
    if (listDescription.Count > 0)
    { 
        ChangeKeyColor(listDescription, Color.Green);  
    }
    ChangeKeyColor("namespace", Color.Blue);
    ChangeKeyColor("public", Color.Blue);
    ChangeKeyColor("class", Color.Blue);
    ChangeKeyColor("/// <summary>",Color.Gray);
    ChangeKeyColor("///", Color.Gray);
    ChangeKeyColor("/// </summary>", Color.Gray);
    ChangeKeyColor("int", Color.Blue);
    ChangeKeyColor("double", Color.Blue);
    ChangeKeyColor("float", Color.Blue);
    ChangeKeyColor("char", Color.Blue);
    ChangeKeyColor("string", Color.Blue);
    ChangeKeyColor("bool", Color.Blue);
    ChangeKeyColor("decimal", Color.Blue);
    ChangeKeyColor("enum", Color.Blue);
    ChangeKeyColor("const", Color.Blue);
    ChangeKeyColor("struct", Color.Blue);
    ChangeKeyColor("DateTime", Color.CadetBlue);
    ChangeKeyColor("get",Color.Blue);
    ChangeKeyColor("set", Color.Blue);
}
public void ChangeKeyColor(string key, Color color)
{
    Regex regex = new Regex(key);
    //找出内容中所有的要替换的关键字
    MatchCollection collection = regex.Matches(txtContent.Text);
    //对所有的要替换颜色的关键字逐个替换颜色    
    foreach (Match match in collection)
    {        
        //开始位置、长度、颜色缺一不可
        txtContent.SelectionStart = match.Index;
        txtContent.SelectionLength = key.Length;
        txtContent.SelectionColor = color;
    }
}

public void ChangeKeyColor(List<string> list, Color color)
{
    foreach (string str in list)
    {
        ChangeKeyColor(str, color);
    }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值