フィルタリングしたいdatagridviewがあります。
datagridviewの上に、同じ列数の2番目の単一行の空のフィルターdatagridviewがあります。
ユーザーがセルの1つを入力すると、フィルターdatagridviewの入力されたセルに基づいてメインdatagridviewをフィルター処理します。
フィルタを適用する前に、編集中に現在のセルテキストでラベルを更新したいと思います。
編集が終了する前にユーザーが変更したテキストを取得するにはどうすればよいですか?
フィルタリングしたいdatagridviewがあります。
datagridviewの上に、同じ列数の2番目の単一行の空のフィルターdatagridviewがあります。
ユーザーがセルの1つを入力すると、フィルターdatagridviewの入力されたセルに基づいてメインdatagridviewをフィルター処理します。
フィルタを適用する前に、編集中に現在のセルテキストでラベルを更新したいと思います。
編集が終了する前にユーザーが変更したテキストを取得するにはどうすればよいですか?
解決済み - 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