RichTextBox 的查找和替换方法






4.67/5 (9投票s)
一篇关于 richtextbox 控件的文章
引言
本文介绍了如何为RichTextBox控件创建查找和替换方法。 它很容易理解。 如果你开发文字处理应用程序,此方法将是一个很好的小工具。 你可以像这样为任何控件创建任何方法。
如何创建它
1. 首先,创建一个新项目,并将其命名为“FRRichTextBox"
2. 然后我们需要创建一个类RichTextBoxFR.vb.要创建它,请单击添加新项按钮在标准工具栏.
3. 选择类从模板,并将其命名为RichTextBoxFR.vb然后单击添加按钮。
4. 我们使用 inherits 语句,并从以下派生我们的类RichTextBox类
Public Class RichTextBoxFR Inherits RichTextBox End Class
5. 我们创建一个FindAndReplace方法,带有两个参数 -FindText和ReplaceText.
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. 两个文本框 :- FindTextBox 和 ReplaceTextBox
ii. 三个按钮 :-btnReplaceAll, btnReplace和btnCancel
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 日