突出显示RichTextBox中的一些单词 [英] Highlight some words in a RichTextBox

查看:73
本文介绍了突出显示RichTextBox中的一些单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在RichTextBox1中,我想用不同的内容突出显示一些单词
颜色.不幸的是,这种情况只在第一个单词出现时出现,
尽管相同的词在文本的其他部分中也是如此.有人可以
请检查此代码,并告诉我哪里出了问题?
这是代码(您需要一个带有按钮和RichTextBox的窗体):
谢谢您的回答.
塞尔吉奥

In the RichTextBox1 I would like to highlight some words in different
colors. Unfortunately this happens only for the first word of a kind,
although the same words are in other parts of the text. Could somebody
kindly check this code and tell me where it is wrong?
Here is the code (you need a Form with a Button and a RichTextBox):
Thank you for answer.
Sergio

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RichTextBox1.Font = New Font("verdana", 10, FontStyle.Regular)
        RichTextBox1.Text = "Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non interrotte di monti, tutto a seni e a golfi, a seconda dello sporgere e del rientrare di quelli, vien, quasi a un tratto, a ristringersi, e a prender corso e figura di fiume, tra un promontorio a destra, e un'ampia costiera dall'altra parte; e il ponte, che ivi congiunge le due rive, par che renda ancor più sensibile all'occhio questa trasformazione, e segni il punto in cui il lago cessa, e l'Adda rincomincia, per ripigliar poi nome di lago dove le rive, allontanandosi di nuovo, lascian l'acqua distendersi e rallentarsi in nuovi golfi e in nuovi seni. La costiera, formata dal deposito di tre grossi torrenti, scende appoggiata a due monti contigui, l'uno detto di san Martino, l'altro, con voce lombarda, il Resegone, dai molti suoi cocuzzoli in fila, che in vero lo fanno somigliare a una sega: talché non è chi, al primo vederlo, purché sia di fronte, come per esempio di su le mura di Milano che guardano a settentrione, non lo discerna tosto, a un tal contrassegno, in quella lunga e vasta giogaia, dagli altri monti di nome più oscuro e di forma più comune."
    End Sub

    Public Function colora_parole(ByVal colori_vari As String, ByVal ParamArray paroladatrovare() As Object)
        For jk As Integer = 0 To UBound(paroladatrovare)
            RichTextBox1.Find(paroladatrovare(jk), RichTextBoxFinds.WholeWord)
            Select Case colori_vari
                Case "colora_rosso"
                    RichTextBox1.SelectionColor = Color.Red
                Case "colora_blu"
                    RichTextBox1.SelectionColor = Color.Blue
                Case "colora_verde"
                    RichTextBox1.SelectionColor = Color.Green
            End Select
            RichTextBox1.SelectionLength = 0
        Next jk
        Return 1
    End Function
    Sub colora()
        colora_parole("colora_rosso", "due")
        colora_parole("colora_blu", "lago")
        colora_parole("colora_verde", "monti")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        colora()
    End Sub
End Class

推荐答案

糟糕的代码,尤其是按字符串的情况,而不是由编译器枚举维护的代码.通常是硬编码的字符串…重复立即常量…(叹气)…绝对不可接受.

解决问题的方法之一是:使用属性SelectionStart, SelectionLength依次选择文本的某些部分,并设置SelectionColor和/或其他Selection…属性.

请参阅 http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx [ ^ ].

—SA
Horrific code, especially case by string, instead of something maintained by a compiler enumeration. Hard-coded strings in general… repeated immediate constants… (sigh)… Absolutely unacceptable.

One of the ways to solve the problem is: sequentially select some part of text using the properties SelectionStart, SelectionLength and setting SelectionColor and/or other Selection… properties.

Please see http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx[^].

—SA


这篇关于突出显示RichTextBox中的一些单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆