[英]How to enable copy-paste from Excel into custom DataGridView?
我試圖在我自己的環境中解決這個老問題,適應了許多不同的解決方案,仍然沒有成功。
我有一個名為EntryGrid
的User 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.