繁体   English   中英

如何从Excel启用复制粘贴到自定义DataGridView?

[英]How to enable copy-paste from Excel into custom DataGridView?

我试图在我自己的环境中解决这个老问题,适应了许多不同的解决方案,仍然没有成功。
我有一个名为EntryGridUser Control ,它有一个DataGridView ,它的标题和代码中设置的东西。 然后有一个表格,其中有一个EntryGrid
我知道excel列必须准备好能够将所有单元格粘贴成一行,为此我使用了这个解决方案: copypaste ,除了复制部分。 这就是我的地方:

Private Sub EntryGrid_KeyDown(sender As Object, e As KeyEventArgs) Handles EntryGrid4.KeyDown, EntryGrid8.KeyDown, EntryGrid16.KeyDown, EntryGrid32.KeyDown
        e.Handled = True
        Dim entryGrid As EntryGrid = sender
        Dim dataGrid As DataGridView = entryGrid.DataGrid
        If (e.Control And e.KeyCode = Keys.V) Then
           MessageBox.Show("Success")               'for now
        End If
End Sub

这绝对不适合我。 我甚至在表单中将KeyPreview设置为True ,但没有任何事情发生过。
然后我尝试了这个解决方案 ,我的任何结果:

Private Sub EntryGrid_EditingControlShowing(sender As System.Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles EntryGrid4.EditingControlShowing
        AddHandler e.Control.KeyDown, AddressOf cell_KeyDown
    End Sub

    Private Sub cell_KeyDown(sender As Object, e As KeyEventArgs)
        If e.KeyCode = Keys.V Then
            MessageBox.Show("Success")
        End If
    End Sub

EntryGrid4是表单上usercontrol的名称,但它没有任何EditingControlShowing事件,只有DataGridView有,但我不能这样使用: EntryGrid4.DataGrid.EditingControlShowing
我在EntryGrid创建了一个事件( Public Event EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) ),但任何内容都发生了变化。
我能够将任何东西从剪贴板粘贴到单元格,但在我开始修改之前就已经可以了。 谢谢你的任何想法!

您正在寻找UserControl ProcessCmdKey方法。 覆盖它并检查Ctrl + V并执行您需要的操作。 例如:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.V))
    {
        if (dataGridView1.EditingControl != null)
            dataGridView1.EditingControl.Text = Clipboard.GetText();
        else if (dataGridView1.CurrentCell != null)
            this.dataGridView1.CurrentCell.Value = Clipboard.GetText();
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM