OnKeyDownイベントをovverideする独自のdatagridviewコントロールを作成しました。
public partial class PMGrid : DataGridView
{
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true; //suppress ENTER
//SendKeys.Send("{Tab}"); //Next column (or row)
base.OnKeyDown(e);
}
else if (e.KeyCode == Keys.Tab)
{
base.OnKeyDown(e);
this.BeginEdit(false);
}
else
{
base.OnKeyDown(e);
}
}
}
datagridviewをクリックしてEnterキーを押すと、行が変更されず、KeyUpイベントが発生するため、完全に機能します。しかし、Tabキーを押すと、次のセルが選択され、EditModeに変更されます。そして、このセルでEnterキーを押すと、KeyUpイベントは発生せず、KeyPressも発生しません。ユーザーが1つのセルから次のセルに移動して、このセルに何かを書き込むことができ、ユーザーがEnterキーを押すと、この値がデータベースに保存されるようにしようとしています。しかし、セルがEditModeの場合、そのユーザーがEnterキーを押したことを検出できません。
ありがとう