专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vb查找替换:VB应用程序中实现“查找和替换”功能 »正文

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

来源: 发布时间:星期四, 2008年9月25日 浏览:142次 评论:0
一、前言

   尽管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

  \' _disibledevent= txtClient.SelText
  End If
End Sub

Function ReplaceFun(Source As String, FromPos As Integer, _
Length As Integer, StringTBReplaced _
As String) As String

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: