Vb.net 在DataGridViewTextBox内部复制和粘贴

Vb.net 在DataGridViewTextBox内部复制和粘贴,vb.net,winforms,datagridview,Vb.net,Winforms,Datagridview,我正在尝试使用Ctrl+C和Ctrl+V在DataGridView单元格内进行非常简单的复制和粘贴。 我不需要复制或粘贴多个单元格,只需复制或粘贴单个选定单元格的选定文本即可 DataGridView的编辑模式设置为Editonner,因为他们不喜欢双击来编辑值 在单元格内,CTRL+C和CTRL+V都不能正常工作 我找到了一个解决办法,但它确实有问题: Private Sub dgParts_EditingControlShowing(sender As Object, e As DataGr

我正在尝试使用Ctrl+C和Ctrl+V在DataGridView单元格内进行非常简单的复制和粘贴。
我不需要复制或粘贴多个单元格,只需复制或粘贴单个选定单元格的选定文本即可

DataGridView的编辑模式设置为Editonner,因为他们不喜欢双击来编辑值

在单元格内,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次

我试着将它切换为向下键而不是向上键,但当我按CTRL键时,它会触发,而当我也按C或V键时,它不会触发


做这么简单的事情似乎并不难,所以我希望我只是缺少了一些可以让它正常工作的东西。

每当你在代码中使用如下语法添加事件处理程序时

AddHandler e.Control.KeyUp, AddressOf dgParts_TextBox_KeyUp
最好的做法是在代码行前面加上相反的代码行,以删除以前添加的任何事件处理程序。如果您不这样做,那么您可能会遇到同一事件被多次处理的情况

将子
dgParts\u EditingControlShowing
更改为包含
RemoveHandler e.Control.KeyUp、dgParts\u文本框的地址\u 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

在单元格内,CTRL+C和CTRL+V都不能正常工作。如果没有该代码,CTRL+V和CTRL+C在单元格中做什么?@preciousbetine什么都没有。不复制、不粘贴、不键入C或V.@AndyD273您是否发现每次移动到文本框时,“粘贴”的数量都会增加?你想编辑第五个单元格吗?@JayV是的,第一列粘贴一次,第二列粘贴两次,第三列粘贴三次,依此类推。然后你在某个地方有处理按键的代码,它篡改了默认行为。这确实有效,我也学到了一些新东西,虽然多亏了主要的评论,我还是找到了问题的根本原因。@AndyD273很高兴能以任何方式提供帮助