2012-06-15 54 views
1
Public Sub MyFunction() 
    Dim lowstring As String 
    lowstring = "hi" 
    Me.RichTextView.Find(lowstring, 0, 2) 
End Sub 

上述方法產生vb.net重載解析失敗查找/替換搜索

重載決策失敗的錯誤,因爲沒有可訪問'Find'可以在不縮小轉換被稱爲:


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

參數匹配參數'characterSet'窄s from 'String' to '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

如您所見,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 
    ) 
+0

謝謝你解釋那麼清楚。 –

1

你的函數調用不匹配任何重載的準確。但是,如果您提供的參數轉換爲其他類型,VB會友好地找到兩種可能的匹配。

您可能想要使用string參數進行過載。所以,你應該寫,

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

RichTextBoxFinds.WholeWord恰好有2數值的其實不是一個理由使用該值,而不是枚舉成員的名字。

這也將工作:

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

,但它是愚蠢的。