【发布时间】:2023-07-29 10:19:01
【问题描述】:
我正在尝试使用 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 时触发。
做这么简单的事情似乎真的不应该这么难,所以我希望我只是错过了一些能让它正常工作的东西。
【问题讨论】:
-
CTRL+C 和 CTRL+V 在单元格内都不能正常工作。 没有该代码的单元格中,CTRL+V 和 CTRL+C 会做什么?
-
@preciousbetine 什么都没有。不复制、不粘贴、不输入 C 或 V。
-
@AndyD273 您是否发现每次移动到文本框时,“粘贴”的数量都会增加?您要编辑第五个单元格吗?
-
@JayV 是的,它在第一列粘贴一次,在第二列粘贴两次,在第三列粘贴三次,依此类推。
-
那么你在某处有处理按键的代码,它正在篡改默认行为。
标签: vb.net winforms datagridview