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
答案 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))
但这很愚蠢。