0

フィルタリングしたいdatagridviewがあります。

datagridviewの上に、同じ列数の2番目の単一行の空のフィルターdatagridviewがあります。

ユーザーがセルの1つを入力すると、フィルターdatagridviewの入力されたセルに基づいてメインdatagridviewをフィルター処理します。

フィルタを適用する前に、編集中に現在のセルテキストでラベルを更新したいと思います。

編集が終了する前にユーザーが変更したテキストを取得するにはどうすればよいですか?

4

1 に答える 1

0

解決済み - c.EditedFormattedValue.ToString を使用

Private Sub dgvFilter_EditingControlShowing(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) _
    Handles dgvFilter.EditingControlShowing

    Dim tb As TextBox = TryCast(e.Control, TextBox)

    If (tb IsNot Nothing) Then
        RemoveHandler tb.KeyUp, AddressOf tb_KeyUp
        AddHandler tb.KeyUp, AddressOf tb_KeyUp

        'RemoveHandler tb.KeyDown, AddressOf tb_KeyDown
        'AddHandler tb.KeyDown, AddressOf tb_KeyDown
    End If

End Sub


Private Sub tb_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)

    Dim c As DataGridViewCell = dgvFilter.CurrentCell
    Dim s As String = c.EditedFormattedValue.ToString
    Dim totalFilter As String

    lblKeyCode.Text = e.KeyCode

    'If e.KeyCode <> Keys.Down Then

    cellName = dgvFilter.Columns(dgvFilter.CurrentCell.ColumnIndex).Name

    cellFilter = "[" & cellName & "] LIKE '" & s & "%'"

    'get the filter (other columns plus current column)
    totalFilter = FilterString(dgvFilter, cellFilter)
    Me.txtFilter.Text = totalFilter

    'apply the filter
    Me.lookupDataTable.DefaultView.RowFilter = totalFilter
    'Else
    'dgv.Focus()
    'End If

End Sub
于 2012-08-13T17:34:34.653 に答える