在下面的代码中,我扩展了 DataGridViewTextBoxCell 类来控制用户将在此字段中输入的值,为此我需要捕获事件 KeyDown。但是只有当我使用键盘在 DGV 中导航时才会调用该事件。当我编辑单元格的值时,事件不会发生。我的代码中缺少什么?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataGridView dataGridView = new DataGridView();
MyDataGridViewColumn col = new MyDataGridViewColumn();
dataGridView.Columns.Add(col);
dataGridView.Rows.Add(new string[] { "0" });
dataGridView.Rows.Add(new string[] { "1" });
dataGridView.Rows.Add(new string[] { "2" });
dataGridView.Rows.Add(new string[] { "3" });
this.panel1.Controls.Add(dataGridView);
}
}
public class MyDataGridViewColumn : DataGridViewColumn
{
public MyDataGridViewColumn()
{
this.CellTemplate = new MyDataGridViewTextBoxCell();
}
}
public class MyDataGridViewTextBoxCell : DataGridViewTextBoxCell
{
protected override void OnKeyDown(KeyEventArgs e, int rowIndex)
{
base.OnKeyDown(e, rowIndex);
var key = e.KeyCode;
}
}