3

datagridviewセルのキープレスイベントをキャプチャする方法のコード例を教えてください。Datagridview_keypress は役に立ちません。

ありがとう

4

6 に答える 6

6

Fco Navarro の回答によると、コントロールへの変更 (プロパティの変更など) が DataGridView に反映されないことを意味するイベントに渡されるe.Controlため、使用が常に機能するとは限りません。イベント ハンドラーで実際の TextBox コントロールを操作する必要がある場合は、代わりに.eEditingControlShowingByVal.TextDataGridView1.EditingControle.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
于 2015-02-17T02:21:28.543 に答える
2
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
于 2013-09-24T17:20:43.043 に答える
1

これを試して:

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 = フラグ
    フラグ = 偽
サブ終了

ここから抜粋。

于 2013-02-20T11:29:35.100 に答える
0

asp.net(Webサイト)でgridviewを使用している場合、それは不可能です。キー押下イベントはありません。確かに可能ですが、JavaScript を使用して、キーが変更されるたびにポストバックを作成する必要があります (クライアント側)。しかし、これは適切なプログラミング スタイルではないため、使用しないでください (システム全体の速度を低下させる多くのポストバックが発生します)。

Windows フォームを使用している場合: sysdragon からの回答をご覧ください。

これが少し役立つことを願っています。

よろしく、誰も

于 2013-02-20T11:33:46.487 に答える