65.9K
CodeProject 正在变化。 阅读更多。
Home

RichTextBox 的查找和替换方法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (9投票s)

2006年3月19日

CPOL

2分钟阅读

viewsIcon

90185

downloadIcon

3223

一篇关于 richtextbox 控件的文章

Sample Image - findandriplace_rtb.jpg

引言

本文介绍了如何为RichTextBox控件创建查找和替换方法。 它很容易理解。 如果你开发文字处理应用程序,此方法将是一个很好的小工具。 你可以像这样为任何控件创建任何方法。

 

如何创建它

1. 首先,创建一个新项目,并将其命名为“FRRichTextBox"

2. 然后我们需要创建一个类RichTextBoxFR.vb.要创建它,请单击添加新项按钮在标准工具栏.

3. 选择从模板,并将其命名为RichTextBoxFR.vb然后单击添加按钮。

4. 我们使用 inherits 语句,并从以下派生我们的类RichTextBox

Public Class RichTextBoxFR
    Inherits RichTextBox

End Class

5. 我们创建一个FindAndReplace方法,带有两个参数 -FindTextReplaceText.

Public Class RichTextBoxFR
    Inherits RichTextBox
    
    Public Sub FindAndReplace(ByVal FindText As String, ByVal ReplaceText As String)
    Me.Find(FindText)
            If Not Me.SelectionLength = 0 Then
            Me.SelectedText = ReplaceText
            Else
            MsgBox("The following specified text was not found: " & FindText)
            End If
    End Sub
    
End Class

Me 这里是RichTextBox。 我们使用Me.Find(FindText)搜索文本RichTextBox控件并选择文本。 如果找到搜索文本,RichTextBox 会选择它,并且SelectionLengthRichTextBox 的将 > 0。 然后我们使用if else 语句来替换该文本,如上所述。

6. 现在,我们通过重载我们之前的FindAndReplace 方法来创建另一个 FindAndReplace 方法。 你可以看到该方法有五个参数 - FindText, ReplaceText, ReplaceAll, MatchCase WholeWord

Public Class RichTextBoxFR
    Inherits RichTextBox
    
    Public Sub FindAndReplace(ByVal FindText As String, ByVal ReplaceText As String)
    Me.Find(FindText)
            If Not Me.SelectionLength = 0 Then
            Me.SelectedText = ReplaceText
            Else
            MsgBox("The following specified text was not found: " & FindText)
            End If
    End Sub
    
    
    Public Sub FindAndReplace(ByVal FindText As String, ByVal ReplaceText As String, ByVal ReplaceAll As Boolean, _
         ByVal MatchCase As Boolean, ByVal WholeWord As Boolean)

            Select Case ReplaceAll

            Case False
                If MatchCase = True Then
                    If WholeWord = True Then
                        Me.Find(FindText, RichTextBoxFinds.MatchCase Or RichTextBoxFinds.WholeWord)
                    Else
                        Me.Find(FindText, RichTextBoxFinds.MatchCase)
                    End If
                Else
                    If WholeWord = True Then
                        Me.Find(FindText, RichTextBoxFinds.WholeWord)
                    Else
                        Me.Find(FindText)
                    End If
                End If

                If Not Me.SelectionLength = 0 Then
                    Me.SelectedText = ReplaceText
                Else
                    MsgBox("The following specified text was not found: " & FindText)
                End If


            Case True


                Dim i As Integer
                For i = 0 To Me.TextLength 'We know that strings we have to replace < TextLength of RichTextBox


                    If MatchCase = True Then
                        If WholeWord = True Then
                            Me.Find(FindText, RichTextBoxFinds.MatchCase Or RichTextBoxFinds.WholeWord)
                        Else
                            Me.Find(FindText, RichTextBoxFinds.MatchCase)
                        End If
                    Else
                        If WholeWord = True Then
                            Me.Find(FindText, RichTextBoxFinds.WholeWord)
                        Else
                            Me.Find(FindText)
                        End If
                    End If


                    If Not Me.SelectionLength = 0 Then
                        Me.SelectedText = ReplaceText
                    Else
                        MsgBox(i & " occurrence(s) replaced")
                        Exit For
                    End If
                Next i

        End Select
    End Sub
    
End Class

7. 我们可以使用 RichTextBoxFinds 枚举(这使我们能够指定在调用 Find 方法时如何执行搜索),例如MatchCase,WholeWord,通过逻辑思考进行高级搜索。

8. 当我们使用ReplaceAll = True时,我们不知道有多少个字符串需要替换,但我们知道需要替换的字符串 < richtextbox 的文本长度。 我们使用 For Loop 语句来实现它。

 

如何使用它

现在我们已经创建了我们的RichTextBoxFR控制。

9. 选择生成菜单 --> 生成解决方案

10.工具箱中选择 RichTextBoxFR,并在窗体上绘制它。

11. 如上所述创建一个新窗体,并将其命名为 frmFind。 这个表单有

          i. 两个文本框 :- FindTextBoxReplaceTextBox

         ii. 三个按钮 :-btnReplaceAll, btnReplacebtnCancel

        iii. 两个复选框 :-MatchCase, WholeWord

12. 以下是表单的代码

Public Class frmFind
 
      Private Sub btnReplaceAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReplaceAll.Click
        If MatchCase.Checked Then

            If WholeWord.Checked Then
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, True, True, True)
            Else
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, True, True, False)
            End If

        Else ' If FindMe.MatchCase.Checked = False

            If WholeWord.Checked Then
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, True, False, True)
            Else
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, True, False, False)
            End If

        End If 'End FindMe.MatchCase.Checked 

    End Sub

    Private Sub btnReplace_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReplace.Click
        If MatchCase.Checked Then

            If WholeWord.Checked Then
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, False, True, True)
            Else
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, False, True, False)
            End If

        Else 'If FindMe.MatchCase.Checked = False

            If WholeWord.Checked Then
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, False, False, True)
            Else
                frmMain.RichTextBoxFR1.FindAndReplace(FindTextBox.Text, ReplaceTextBox.Text, False, False, False)
            End If

        End If 'End FindMe.MatchCase.Checked 

    End Sub
      
End Class

 

历史

 创建 - 2006 年 3 月 17 日

© . All rights reserved.