【问题标题】:Change part of an string for a colored in RichTextBox [duplicate]将字符串的一部分更改为 RichTextBox 中的颜色 [重复]
【发布时间】:2015-10-06 16:48:11
【问题描述】:

我有一个带有完整字符串的 RichTextBox。我需要为与名称对应的所有单词着色,例如玛尔塔、奥斯卡和里卡多。我怎样才能做到这一点?

这是我到目前为止的代码。它替换字符串并将其放入 RichTextBox:

private void btnFormat_Click(object sender, EventArgs e)
{
    string query_orig = rtxtQuery.Text;
    string qry_reemp_oscar = query_orig.Replace("oscar", "OSCAR");
    string qry_reemp_marta= qry_reemp_coma.Replace("marta", "MARTA");
    string qry_reemp_final = qry_reemp_select.Replace(
        " ricardo ", System.Environment.NewLine + " RICARDO ");
    rtxtQryLinea.Text = qry_reemp_final;
}

【问题讨论】:

  • 您能分享一下到目前为止您尝试过的事情以及您遇到的困难吗?
  • 更新了@Quality Catalyst

标签: c# .net


【解决方案1】:

试试这个

string query_orig = rtxtQuery.Text;
query_orig = query_orig.Replace("oscar", "OSCAR");
query_orig = query_orig.Replace("marta", "MARTA");
query_orig = query_orig.Replace("ricardo ", "RICARDO ");
 rtxtQryLinea.Text = query_orig;

rtxtQryLinea.Select(query_orig.IndexOf("OSCAR"), "OSCAR".Length);
rtxtQryLinea.SelectionColor = Color.Aqua;

rtxtQryLinea.Select(query_orig.IndexOf("MARTA"), "MARTA".Length);
rtxtQryLinea.SelectionColor = Color.Coral;

rtxtQryLinea.Select(query_orig.IndexOf("RICARDO"), "RICARDO".Length);
rtxtQryLinea.SelectionColor = Color.OrangeRed;

【讨论】:

  • 我试过了,它工作得很好,但是......它只会在第一次找到“名称”(如“OSCAR”)时着色,但不会在也找到“OSCAR”的其他部分着色。有什么建议吗?
【解决方案2】:

你可以试试这个

int pos = rtb.TextLength;
rtb.AppendText(txt);
rtb.Select(pos, txt.Length);
rtb.SelectionColor = col;
rtb.Select();

【讨论】:

  • 用一些解释和细节覆盖你的code-sn-p。目前,您的答案是低质量的答案,更像是评论。
猜你喜欢
  • 2018-06-15
  • 2015-04-20
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2015-05-17
相关资源
最近更新 更多