1
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

4

2 回答 2

4

如您所见,RichTextBox.Find有 7 个重载。您使用 3 个参数和两个整数调用的那个将 aChar[]作为第一个参数,而不是 a 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
    )
于 2012-06-15T23:39:51.883 回答
1

您的函数调用与任何重载都不完全匹配。但是,如果您提供的参数被强制转换为不同的类型,VB 很友好地找到了两个可能的匹配项。

您可能想要string参数的重载。所以你应该写,

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

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

这也可以:

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

但这是愚蠢的。

于 2012-06-15T23:34:49.083 回答