用于查找/替换搜索的vb.net重载解析失败

时间:2012-06-15 23:15:07

标签: vb.net function replace find

Public Sub MyFunction()
    Dim lowstring As String
    lowstring = "hi"
    Me.RichTextView.Find(lowstring, 0, 2)
End Sub

以上产生错误

  

重载解析失败,因为没有缩小转换就无法调用可访问的'Find'

     
     
Public Function Find(characterSet() As Char, 
    start As Integer, end As Integer) As Integer:
         

参数匹配参数'characterSet'变窄         从'String''1-dimensional array of Char'

         
Public Function Find(str As String, start As Integer, 
    options As System.Windows.Forms.RichTextBoxFinds) As Integer: 
         

参数匹配参数'options''Integer'缩小到         'System.Windows.Forms.RichTextBoxFinds'

  

如果更改替换字符串值,则只有在将第二个或第三个值更改为0以外的值时才会发生错误。

为什么不使用标准整数?这个错误究竟意味着什么?任何人都可以指点我在vb.net(2010)中处理重载函数的一些文档吗?

我希望这个问题足够集中......我对这个问题感到非常困惑。

感谢您的帮助 - EB

2 个答案:

答案 0 :(得分:4)

如您所见,RichTextBox.Find有7次重载。 您使用3个参数和两个整数调用的那个将Char[]作为第一个参数,而不是String

如果要从字符列表中找到字符的第一个实例,则会使用此重载。

我假设您要在给定范围内找到string的位置。然后你需要使用这个重载:RichTextBox.Find(String, Int32, Int32, RichTextBoxFinds)

例如:

' Obtain the location of the search string in RichTextView'
Dim index = RichTextView.Find(lowstring, 0, 2, RichTextBoxFinds.WholeWord)

请注意,您可以按位组合不同的RichTextBoxFinds

例如:

Dim index = Me.RichTextView.Find(
        lowstring,
        0,
        2,
        RichTextBoxFinds.WholeWord Or RichTextBoxFinds.MatchCase
    )

答案 1 :(得分:1)

您的函数调用与任何重载都不完全匹配。但是,如果你提供的参数被转换为另一种类型,VB就足以找到两种可能的匹配。

您可能希望使用string参数进行重载。所以你应该写,

RichTextBox1.Find(lowstring, 0, RichTextBoxFinds.WholeWord)

RichTextBoxFinds.WholeWord恰好具有数字值2的事实不是使用该值而不是枚举成员名称的理由。

这也有效:

RichTextBox1.Find(lowstring, 0, CType(2, RichTextBoxFinds))

但这很愚蠢。