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'

置換文字列の値を変更してもエラーは発生せず、2 番目または 3 番目の値を 以外に変更した場合にのみ発生します0

ここで標準整数の使用が機能しないのはなぜですか? このエラーの本当の意味は何ですか? vb.net (2010) でオーバーロードされた関数を処理するためのドキュメントを教えてもらえますか?

この質問が十分に焦点を合わせていることを願っています...私はこれについてかなり混乱しています。

助けてくれてありがとう - EB

4

2 に答える 2

4

ご覧のとおり、RichTextBox.Find7 つのオーバーロードがあります。3 つの引数と 2 つの整数で呼び出しているものは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
    )
于 2012-06-15T23:39:51.883 に答える
1

関数呼び出しがどのオーバーロードとも正確に一致しません。ただし、VB は親切にも、指定した引数が別の型にキャストされた場合に機能する可能性のある 2 つの一致を見つけてくれました。

おそらく、stringパラメーターを使用したオーバーロードが必要でした。だからあなたは書いたはずです、

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

RichTextBoxFinds.WholeWordがたまたま数値を持っているという事実2は、列挙メンバー名の代わりにその値を使用する理由にはなりません。

これも機能します:

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

しかし、それは愚かです。

于 2012-06-15T23:34:49.083 に答える