0

ユーザーが押したのと同じキー文字でセル値が始まる datagridview 行を調べようとしています。コードベローは機能しますが、同じ文字を2回、3回押すと、同じ文字で始まる次の行に選択が移動しません...

     Private Sub dataGridView1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles dgw.KeyPress
    If [Char].IsLetter(e.KeyChar) Then
        For i As Integer = 0 To (dgw.Rows.Count) - 1
            If dgw.Rows(i).Cells(1).Value.ToString().StartsWith(e.KeyChar.ToString(), True, CultureInfo.InvariantCulture) Then
                If lastKey = e.KeyChar And lastIndex < i Then
                    Continue For
                End If

                lastKey = e.KeyChar
                lastIndex = i
                dgw.Rows(i).Cells(1).Selected = True
                Return

            End If

        Next
    End If
End Sub
4

2 に答える 2

0

ロジックの欠陥のようです。キーを押し、インデックスを保存してブレークします。次に、同じキーを押します。そして、lastIndex が i より小さい場合は続行します。つまり、最後の行よりも値が小さい最初の行のみが選択されます。lastindex > i に変更すると問題ありません。

あなたが書いたコードでは、キーに一致する最初の行以外は何も取得できません。その後は何回押しても構いません。

于 2013-10-21T07:59:23.373 に答える