代码之家  ›  专栏  ›  技术社区  ›  ewall

如何将cntl-x/c/v按键事件连接到剪切/复制/粘贴例程

  •  0
  • ewall  · 技术社区  · 15 年前

    (这应该很简单…但是谷歌搜索是一堆乱七八糟的兔道。)

    我有一个Windows窗体应用程序,带有TabControl。在第一个选项卡(这是一组文本框)上,用于剪切/复制/粘贴的cntl-x/c/v键盘快捷键按预期工作。在第二个选项卡(即DataGridView)上,键盘快捷键不起任何作用。

    如何将这些按键事件连接到我的剪切/复制/粘贴例程?

    请注意: 我的DataGridView已经有了很好的剪切/复制/粘贴例程 --当从工具提示按钮或菜单启动时,它们工作得很好。我只需要将这些订阅连接到cntl-x/c/v按键事件。

    2 回复  |  直到 13 年前
        1
  •  1
  •   Jasper wontondon    13 年前

    您的控件应该已经有一个或多个以下事件: KeyPress , KeyUp KeyDown .

    像处理其他事件一样处理这些事件。在事件处理程序中,您可以对提供的参数进行检查,以查看是否按了任何控制键,以及按了哪些其他键。

    如果已按了正确的键组合,则可以将内容添加到剪贴板或尝试从剪贴板复制到控件。

        2
  •  1
  •   ewall    15 年前

    根据Matthew的提示,我可以将以下工作代码组合在一起(“dgvcutcopyplaste”当然是我的类,用于在DataGridView中剪切/复制/粘贴多个单元格,而不是内置的):

    Private Sub DataGridView1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles DataGridView1.KeyUp
        If Control.ModifierKeys = Keys.Control Then
            Select Case e.KeyCode
                Case Keys.X
                    DGVCutCopyPaste.CutDGVCells(DataGridView1)
                Case Keys.C
                    DGVCutCopyPaste.CopyDGVCells(DataGridView1)
                Case Keys.V
                    If Clipboard.ContainsText Then
                        DGVCutCopyPaste.PasteDGVCells(DataGridView1)
                    End If
            End Select
        End If
    End Sub
    

    我在“keypress”事件中遇到了一些问题(它有不同的签名),但是“keypup”和“keypdown”可以这样工作。