刷新富文本框

Posted

技术标签:

【中文标题】刷新富文本框【英文标题】:Refreshing the richtextbox 【发布时间】:2012-03-07 20:48:23 【问题描述】:

我在我的 win 表单应用程序中使用富文本框。我正在搜索特定文本并突出显示所选文本。假设我正在搜索字符串“he_llo”,因此“he_llo”被突出显示。我将其更正为“你好”。我在按钮单击中调用突出显示功能。如果字符串被更正为 hello,那么它不应该突出显示。但它正在突出显示。

 private void btnValidate_Click(object sender, EventArgs e)
        
            Validate();

        

公共无效验证() 字符串 [] 单词; object[] items = chklbErrorlist.CheckedItems.OfType().ToArray();

    for (int i = 0; i < errorList.Count; i++)
    
        //errorList.Add(items[i]);
        if (rtbFileDisplay.Text.IndexOf((errorList[i].ToString())) != -1)
        
            wordToFind = errorList[i].ToString();
            index = rtbFileDisplay.Text.IndexOf(wordToFind);
            lstErrorList.Items.Add(index.ToString());
            while (index != -1)
            
                rtbFileDisplay.Select(index, wordToFind.Length);
                rtbFileDisplay.SelectionBackColor = Color.Red;
                index = rtbFileDisplay.Text.IndexOf(wordToFind, index + wordToFind.Length);
                lstErrorList.Items.Add(index.ToString());
            

        
    

    #region "Special Char"
    foreach (string exp in RegularExpSpChar)
    
        int pos = 0;

        char ch = exp[1];
        words = null;
        words = rtbFileDisplay.Text.Split(ch);

        pos = words[0].Length;

        Regex myregex;
        if (ch.Equals('.'))
        
            string expr = @"^\.+[a-zA-Z]";
            myregex = new Regex(expr);
        
        else
        

            myregex = new Regex(exp);
        

        for (int index = 1; index < words.Length; index++)
        
            string line = ch + words[index];
            bool isexist = myregex.IsMatch(line);
            if (isexist)
            
                rtbFileDisplay.Select(pos, 1);
                rtbFileDisplay.SelectionBackColor = Color.Red;
            
            else
            
                rtbFileDisplay.Select(pos, 1);
                rtbFileDisplay.SelectionBackColor = Color.White;
            
            pos = pos + line.Length;
        
    
    #endregion
    #region "Special"
    foreach (string exp in RegularExpSpecial)
    

        int pos = 0;
        char ch = exp[2];
        words = null;
        switch (ch)
        
            case 'i': tagtype = "</i>";
                highlightlen = 5;
                break;
            case 'b': tagtype = "</b>";
                highlightlen = 5;
                break;
            case 's': 
                if(exp[3] == 'u' && exp[4] == 'p')
                
                    tagtype = "</sup>";
                    highlightlen = 7;
                
                else if (exp[5] == 'n')
                
                    tagtype = "</span>";
                    highlightlen = 8;
                
                break;
            case '8': 
                if(exp[1] == '#' && exp[4] == '2' && exp[5] == '1')
                
                    tagtype = "&#8221;";
                    highlightlen = 8;
                

                else if (exp[1] == '#' && exp[4] == '1' && exp[5] == '1')
                
                    tagtype = "&#8217;";
                    highlightlen = 8;
                
                break;
            default: break;
        


        words = Regex.Split(rtbFileDisplay.Text, tagtype);

        pos = words[0].Length;

        Regex myregex;
        myregex = new Regex(exp);

        for (int index = 1; index < words.Length; index++)
        
            string line = tagtype + words[index];
            bool isexist = myregex.IsMatch(line);
            if (isexist)
            
                rtbFileDisplay.Select(pos,highlightlen);
                rtbFileDisplay.SelectionBackColor = Color.Red;

            
            pos = pos + line.Length;
        
    
    #endregion

其中 pos 是 he_llo 的索引, highlighten 是 he_llo 的长度。

【问题讨论】:

我不明白这个问题。你告诉它突出显示它正在突出显示。 我正在寻找一个特定的文本说 Hello 。它突出显示。我把它改成了地狱。那个时候应该不是高亮而是它的高亮。 我正在使用 indexof 方法。编辑后文本框不刷新 post 你如何获得pos和highlightlen变量,也许你在更改文本后没有重新计算它们? I am calling the highlight function in the button click。你忘记点击按钮了。或者从 TextChanged 事件中调用该函数。 【参考方案1】:

您可能只需要突出显示所有文本并将 selectionbackcolor 设置为白色。

【讨论】:

以上是关于刷新富文本框的主要内容,如果未能解决你的问题,请参考以下文章

word格式刷怎么用?

过年刷千言数据集:文本相似度比赛

过年刷千言数据集:文本相似度比赛

过年刷千言数据集:文本相似度比赛

要使用格式刷命令按钮,应先选择啥选项卡

下列关于windows文本框的描述不正确的是a文本框内不能添加文本框b文本框内的