アプリ版:「スタンプのみでお礼する」機能のリリースについて

DataGridviewのセルのデータを[Ctrl]+[C]でコピーし、セルを移動し[Ctrl]+[V]でデータの貼り付けをすると、カーソルはデータ最後の文字の後にきます。
この状態を、貼り付けした文字全体を選択した状態にしたいのですが、出来ますでしょうか?
よろしくお願いいたします。

A 回答 (1件)

DataGridViewでセルが編集中の時にキーイベントを捕捉する


DOBON.NET > プログラミング道 > .NET Tips > DataGridView
http://dobon.net/vb/dotnet/datagridview/textboxe …

上記ページを参考にしてみました
動作するとは思わなかったですけど・・・なんかうまく動くみたいです^^;

コピーペーストのキーイベントのみ対応しています
マウスからの貼り付けには対応していません
#対応するならば、ウィンドウメッセージのフックにて対応するしかないと思われます
#もしくはコンテキストメニュー自体を表示させなくするとか・・・


Private _pasteFlag As Boolean = False  'ペーストフラグ

''EditingControlShowingイベントハンドラ
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
  If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then
    Dim dgv As DataGridView = CType(sender, DataGridView)
    Dim tb As DataGridViewTextBoxEditingControl = CType(e.Control, DataGridViewTextBoxEditingControl)
    RemoveHandler tb.KeyDown, AddressOf dataGridViewTextBox_KeyDown
    RemoveHandler tb.TextChanged, AddressOf dataGridViewTextBox_TextChanged

    If dgv.CurrentCell.OwningColumn.Name = dgv.Columns(0).Name Then       '特定カラムのみ
      AddHandler tb.KeyDown, AddressOf dataGridViewTextBox_KeyDown      'キーダウンイベント
      AddHandler tb.TextChanged, AddressOf dataGridViewTextBox_TextChanged  'テキスト変更後イベント
    End If
  End If
End Sub

''キーダウン
Private Sub dataGridViewTextBox_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
  If e.Control AndAlso e.KeyCode = Keys.V Then
    Me._pasteFlag = True
  End If
End Sub

''テキスト変更後
Private Sub dataGridViewTextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
  If Me._pasteFlag Then
    Dim tb As DataGridViewTextBoxEditingControl = CType(sender, DataGridViewTextBoxEditingControl)
    tb.SelectAll()
    Me._pasteFlag = False
  End If
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。出来ました!
参考ページは何度も見ていたのですが、コードにすることが出来なくて困っていました。
もっと、頑張って勉強します。

お礼日時:2007/11/27 15:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!