datagridviewセルのキープレスイベントをキャプチャする方法のコード例を教えてください。Datagridview_keypress は役に立ちません。
ありがとう
Fco Navarro の回答によると、コントロールへの変更 (プロパティの変更など) が DataGridView に反映されないことを意味するイベントに渡されるe.Control
ため、使用が常に機能するとは限りません。イベント ハンドラーで実際の TextBox コントロールを操作する必要がある場合は、代わりに.e
EditingControlShowing
ByVal
.Text
DataGridView1.EditingControl
e.Control
Private WithEvents txtNumeric As New DataGridViewTextBoxEditingControl
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
txtNumeric = CType(DataGridView1.EditingControl, DataGridViewTextBoxEditingControl)
End Sub
Private Sub txtNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles txtNumeric.KeyPress
txtNumeric.Text = txtNumeric.Text.ToUpper()
End Sub
Private WithEvents txtNumeric As New DataGridViewTextBoxEditingControl
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
txtNumeric = CType(e.Control, DataGridViewTextBoxEditingControl)
End Sub
Private Sub txtNumeric_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtNumeric.KeyDown
If (e.KeyData >= Keys.A And e.KeyData <= Keys.Z) Then
e.SuppressKeyPress = True
End If
End Sub
これを試して:
Private Sub DataGridView1_EditingControlShowing (ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) DataGridView1.EditingControlShowing を処理します Me.DataGridView1.CurrentCell.ColumnIndex = 0 であり、e.Control が何もない場合 Dim tb As TextBox = CType(e.Control, TextBox) AddHandler tb.KeyDown、AddressOf TextBox_KeyDown AddHandler tb.KeyPress、AddressOf TextBox_KeyPress 終了条件 サブ終了 Private Sub TextBox_KeyDown (オブジェクトとしての ByVal 送信者、System.Windows.Forms.KeyEventArgs としての ByVal e) e.KeyCode = Keys.Space の場合 フラグ = 真 終了条件 サブ終了 Private Sub TextBox_KeyPress (System.Object としての ByVal 送信者、System.Windows.Forms.KeyPressEventArgs としての ByVal e) e.Handled = フラグ フラグ = 偽 サブ終了
ここから抜粋。
asp.net(Webサイト)でgridviewを使用している場合、それは不可能です。キー押下イベントはありません。確かに可能ですが、JavaScript を使用して、キーが変更されるたびにポストバックを作成する必要があります (クライアント側)。しかし、これは適切なプログラミング スタイルではないため、使用しないでください (システム全体の速度を低下させる多くのポストバックが発生します)。
Windows フォームを使用している場合: sysdragon からの回答をご覧ください。
これが少し役立つことを願っています。
よろしく、誰も