記事DataGridView keydown event not working in C# に基づいて開発したコードに問題があります。
ユーザーが Dataviewgrid コントロールに行を追加できるようにしたかったのですが、AllowUserToAddRows
これを有効にすると、新しい行の新しいセルに最初の文字が入力されるとすぐに追加の行が表示されることがわかりました。これは私の貧弱なユーザーにとって混乱を招く可能性があるため、これを防ぐために、上記の記事のコードを使用AllowUserToAddRows
して、すべてのキーストロークですぐに無効にしました (ただし、最初の文字が入力された後にのみ無効にすることをお勧めします)。ただし、これは入力された最初の文字を飲み込むようです。処理のために基本クラスに渡されません。完全なコードは次のとおりです。
public sealed class XDataGridView : DataGridView
{
private bool _singleUpdateOnly = true;
public bool SingleUpdateOnly
{
get { return _singleUpdateOnly; }
set { _singleUpdateOnly = value; }
}
[Description("Disallows user adding rows as soon as a key is struck to ensure no blank row at bottom of grid")]
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if (SingleUpdateOnly)
{
AllowUserToAddRows = false;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
1 番目に入力した文字が飲み込まれるのはなぜですか? どうすればこれを防ぐことができますか? 私がコード化したものよりも良い方法はありますか?