投稿者 ひでと  (社会人) 投稿日時 2011/4/26 10:12:38
試してみたのですが、解決しません。もう少しご助力を・・・。

試してみたのは以下のようです。
    Private Sub dataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dataGridView1.EditingControlShowing
        '表示されているコントロールがDataGridViewTextBoxEditingControlか調べる
        If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then
            Dim dgv As DataGridView = CType(sender, DataGridView)

            '編集のために表示されているコントロールを取得
            Dim tb As DataGridViewTextBoxEditingControl = _
                CType(e.Control, DataGridViewTextBoxEditingControl)

            'イベントハンドラを削除
            RemoveHandler tb.Leave, AddressOf dataGridViewTextBox_Leave

            'KeyPressイベントハンドラを追加
            AddHandler tb.Leave, AddressOf dataGridViewTextBox_Leave
        End If
    End Sub
    'DataGridViewに表示されているテキストボックスのKeyPressイベントハンドラ
    Private Sub dataGridViewTextBox_KeyPress(ByVal sender As Object, _
            ByVal e As KeyPressEventArgs)
        If e.KeyChar = vbCr Then
            sender.Text = Calk(sender.text)
        End If
    End Sub

    Private Sub dataGridViewTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
        sender.text = Calk(sender.text)
    End Sub

    Private Sub dataGridViewTextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs)
        sender.text = Calk(sender.text)
    End Sub
    Private Sub dataGridViewTextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
        sender.text = Calk(sender.text)
    End Sub

として dataGridView_EditingControlShowingのRemoveHandler 、AddHandler を
KeyPress、Validating、Validated、Leaveと変更しながら実験してみました。

KeyPressの場合 If e.KeyChar = vbCr Then ではEnterキーが取得できないようで、
sender.Text = Calk(sender.text)は実行できませんでした。
他のTextBoxではうまくできていたのに・・・?

他の場合は sender.textは 計算した結果 ("1+1"で実験  "2")になりましたが、イベントが終わると
dataGridViewのセルでは "1+1"のままになってしまいます。

さらなるアドバイスをお願いいたします。