簡體   English   中英

復制並粘貼到DataGridViewTextBox內部

[英]Copy and Paste inside DataGridViewTextBox

我正在嘗試使用Ctrl + C和CTRL + V在DataGridView單元中進行非常簡單的復制和粘貼。
我不需要能夠復制或粘貼多個單元格,只需復制或粘貼單個選定單元格的選定文本即可。

DataGridView的編輯模式設置為EditOnEnter,因為他們不希望雙擊來編輯值。

CTRL + C和CTRL + V都不能在單元格內正常工作。

我找到了一種解決方法,但這確實有問題:

Private Sub dgParts_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgParts.EditingControlShowing
    AddHandler e.Control.KeyUp, AddressOf dgParts_TextBox_KeyUp
End Sub

Private Sub dgParts_TextBox_KeyUp(sender As Object, e As KeyEventArgs)
    If e.KeyCode = Keys.C AndAlso e.Modifiers = Keys.Control Then
        Clipboard.SetText(sender.SelectedText)
    End If
    If e.KeyCode = Keys.V AndAlso e.Modifiers = Keys.Control Then
        sender.SelectedText = Clipboard.GetText
    End If
End Sub

由於某種原因,KeyUp會觸發多次,因此當我粘貼時,它將文本插入5次。

我嘗試將其切換到KeyDown而不是KeyUp,但是當我按下CTRL而不是同時按下C或V時它會觸發。

做這么簡單的事情似乎真的並不難,所以我希望我只是缺少一些可以使它正常工作的東西。

每當您使用以下語法在代碼中添加事件處理程序時

AddHandler e.Control.KeyUp, AddressOf dgParts_TextBox_KeyUp

優良作法是在該代碼行的反行之前刪除所有先前添加的事件處理程序。 如果您不這樣做,則可能會遇到多次處理同一事件的情況。

更改Sub dgParts_EditingControlShowing以包含RemoveHandler e.Control.KeyUp, AddressOf dgParts_TextBox_KeyUp

最終版本應為:

Private Sub NewMethod(sender As Object, e As DataGridViewEditingControlShowingEventArgs)
    RemoveHandler e.Control.KeyUp, AddressOf dgParts_TextBox_KeyUp
    AddHandler e.Control.KeyUp, AddressOf dgParts_TextBox_KeyUp
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM