VB应用程序中实现“查找和替换”功能

时间:2010-01-27 11:10:34  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:正错误的机会(尽管是建议),它同时也提供了"查找替换"工具,用以进行用户定义的单词替换。这篇文章我将解释如何在VB应用程序中实现"查找替换"功能。 二、前提条件    在解释代码的时候,我假定读者朋友们已经有使用Visual Basic的经验,熟悉Visual Studio开发环境中各种内置的控件及库函数(尽管我使用的不多)。我已经尝试着尽可能地简...
  正文:

一、前言

   尽管Visual Basic并不是我最喜欢的开发工具,但我喜欢它简单而又丰富的库集。每当开发一个需要处理大量文本数据的应用程序时,需要具有拼写错误纠正功能,例如,微软的word程序,当运行"拼写检查"时,将提供给你一个改正错误的机会(尽管是建议),它同时也提供了"查找替换"工具,用以进行用户定义的单词替换。这篇文章我将解释如何在vb应用程序中实现"查找替换"功能。

二、前提条件

   在解释代码的时候,我假定读者朋友们已经有使用Visual Basic的经验,熟悉Visual Studio开发环境中各种内置的控件及库函数(尽管我使用的不多)。我已经尝试着尽可能地简化程序代码,用不了多久你就可以明白程序的逻辑。如果想对一些库函数(如参数,语法)进一步详细地理解,可以参阅MSDN。图一是程序运行后的效果图:


图一、程序实现"查找替换"功能时的效果图

三、基础工作

   首先创建一个标准的EXE类型的VB工程,将默认窗体更名为frmMainForm ,在默认窗体上增添一个菜单,具体设置如下(符号"&"用于加速键,单词mnu后的名字用来说明菜单项的名字(在代码中使用)):

&Edit
...&Find and Replace mnuFindandreplace
E&xit mnuExit

   向默认窗体添加一个TextBox控件,命名为txtClientArea。使用鼠标调整控件位置和尺寸,使它覆盖窗体的整个客户区,在属性窗口将这个TextBox控件的 MultiLine属性设置为"True"。

   使用Project > Add Form菜单向工程中添加另外一个窗体,将这个窗体命名为"frmFindReplace",并在属性窗口中将它的BorderStyle属性设置为"4 - FixedToolWindow"。现在,添加两个TextBox控件,并分别命名为"txtSearchTerm"和"txtReplaceWithString"。添加一个复选框,命名为chkCaseSense。最后,添加一个命令按钮控件,命名为"cmdReplace"。

   在frmMainForm窗体中添加如下代码:

Private Sub mnuExit_Click()
  End
End Sub

Private Sub mnuFindandreplace_Click()
  frmFindReplace.FindnReplace txtClientArea
End Sub

   从上面代码中可以非常明显地看出, 当点击Exit菜单时,我们想终结应用程序,当点击"Find and Replace"菜单时,想通过共用接口frmFindReplace及FindnReplace()方法来激活frmFindReplace窗体。这个公用的接口使查找算法具有普遍性,使用这个接口时,需要提供一个TextBox作为参数(在这里面,搜寻将被执行)。通过使用你自己的TextBox的名字来代替txtClientArea的名字,可以在多个文本框内执行"查找替换"功能,而不用更改代码。"查找和替换"的实现代码主要是在frmFindReplace窗体内,这个模块的代码如下:

' This variable is used for making the algorithm generic.
Dim txtClient As TextBox

' This method is the public interface to SnR functionality.

Public Sub FindnReplace(ByRef Tb As TextBox)
  Set txtClient = Tb
  Me.Show , txtClient.Parent
End Sub

Private Sub cmdReplace_Click()
  Dim CaseSense As Integer
  Dim SourceText As String
  Dim SourceTextCopy As String
  Dim Cnt As Integer

  ' Check for the case sensitivity options
  If (chkCaseSense.Value = VBChecked) Then
   CaseSense = 0
  Else
   CaseSense = 1
  End If

  ' One contains the original text and another contains replaced
  ' (updated) one.
  ' Used to check whether a replacement was done or not.
  SourceText = txtClient.Text
  SourceTextCopy = SourceText

  If Len(SourceText) = 0 Then
   Exit Sub
  End If

  On Error GoTo ErrHandler
  Dim SearchTermLen As Integer
  Dim FndPos As Integer

  SearchTermLen = Len(txtSearchTerm.Text)
  ' Search from the begining of the document.
  Cnt = 1

  ' This is endless loop (terminated on a condition checked inside
  ' the loop body).
  While (1)

VB应用程序中实现“查找和替换”功能》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/VB/12485.html


关键字:

关于《VB应用程序中实现“查找和替换”功能》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td