好像過了一個小時。我只想在編輯我的 DataGridView 時實作復制和粘貼。也許我要求太多了?
這就是我迄今為止所擁有的。初始化:
dataGridView.EditingControlShowing = new DataGridViewEditingControlShowingEventHandler(dataGridView_EditingControlShowing);
我猜這叫:
private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyDown = Control_KeyDown;
}
我們有:
private void Control_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.C)
{
System.Diagnostics.Debug.WriteLine("control c");
}
}
我可以捕獲控制。我可以捕獲 C。我無法捕獲 Ctrl-C。不可能。
uj5u.com熱心網友回復:
該KeyDown事件僅在 中的單元格處于編輯模式時觸發DataGridView,因此鍵盤快捷鍵事件捕獲器在其他情況下將不起作用。您可以通過指向KeyDown事件處理程式來解決此問題,如下所示:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is DataGridViewTextBoxEditingControl)
{
DataGridViewTextBoxEditingControl tb = e.Control as DataGridViewTextBoxEditingControl;
tb.KeyDown -= dataGridView_KeyDown;
tb.PreviewKeyDown -= Control_KeyDown;
tb.KeyDown = dataGridView_KeyDown;
tb.PreviewKeyDown = Control_KeyDown;
}
}
private void Control_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == (Keys.Control | Keys.C))
{
System.Diagnostics.Debug.WriteLine("control c");
}
}
這篇文章中也有類似的討論。
uj5u.com熱心網友回復:
PreviewKeyDown當單元格未處于編輯模式時,應該觸發grids事件......類似......
private void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.C) {
System.Diagnostics.Debug.WriteLine("Preview control c");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385161.html
