1

この非公開サブは、「Property Chars: Is ReadOnly」と言い続けます。

どこで間違ったのですか?StrWord は、'banana' などの文字列です。

私が期待していたのは、単語をループすることであり、「推測」(1 文字) が文字列 (StrWord) 内の任意の文字と一致する場合、単語のテキスト ボックス内の対応する文字に置き換えられます。

だからハングマン、多かれ少なかれ。

ありがとう、よろしく、
キャメロン。

Private Sub Lookup(ByVal Guess)
    Dim Count As Integer = 0
    For Each Character As Char In StrWord
        If Character = Guess Then
            txtResult.Text(Count) = Guess
        Else
            Count += 1
        End If
    Next
End Sub
4

2 に答える 2

4

.NET の文字列は不変です。つまり、それらを変更することはできません。代わりに、新しい文字列を作成して Text プロパティに割り当てる必要があります。System.Text.StringBuilderクラスは変更可能であり、メソッドを使用して文字列に変換できるため、クラスも役立つことがわかりますToString

次のようなことを試してください:

Private Sub Lookup(ByVal Guess As Char)

    Dim temp as new StringBuilder(txtResult.Text)

    Dim Count As Integer = 0
    For Each Character As Char In StrWord
        If Character = Guess Then
            temp.Chars(Count) = Character
        Else
            Count += 1
        End If
    Next
    txtResult.Text = temp.ToString()

End Sub

またはこれ:

Private Sub Lookup(ByVal Guess As Char)

Dim temp as new StringBuilder()

Dim Count As Integer = 0
For Each Character As Char In StrWord
    If Character = Guess Then
        temp.Append(Character)
    Else
        temp.Append("*")
        Count += 1
    End If
Next
txtResult.Text = temp.ToString()

サブ終了

于 2013-01-22T13:32:55.267 に答える
-1

ユーザーがテキストボックスを変更できないように、テキストボックスを読み取り専用に設定していますか? その場合は、ReadOnly から変更して変更を加えてから、ReadOnly に戻す必要がある場合があります。

次のように変更することもできます。

txtResult.Text.Replace(Character, Guess)
于 2013-01-22T13:19:15.307 に答える