簡體   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