- ベストアンサー
VB2005 DataGridViewでセルデータ貼付後、貼付したデータの全体を選択した状態に出来ますか?
DataGridviewのセルのデータを[Ctrl]+[C]でコピーし、セルを移動し[Ctrl]+[V]でデータの貼り付けをすると、カーソルはデータ最後の文字の後にきます。 この状態を、貼り付けした文字全体を選択した状態にしたいのですが、出来ますでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
DataGridViewでセルが編集中の時にキーイベントを捕捉する DOBON.NET > プログラミング道 > .NET Tips > DataGridView http://dobon.net/vb/dotnet/datagridview/textboxevent.html 上記ページを参考にしてみました 動作するとは思わなかったですけど・・・なんかうまく動くみたいです^^; コピーペーストのキーイベントのみ対応しています マウスからの貼り付けには対応していません #対応するならば、ウィンドウメッセージのフックにて対応するしかないと思われます #もしくはコンテキストメニュー自体を表示させなくするとか・・・ 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
お礼
回答ありがとうございました。出来ました! 参考ページは何度も見ていたのですが、コードにすることが出来なくて困っていました。 もっと、頑張って勉強します。