DataGridView
の最後の列にユーザーがEnterキーを押したときに次の行にジャンプするにはどうすればよいですか?CのDataGridViewの最後の列にユーザーがデータを入力したときに新しい行を追加する方法このコードはまた、私が解決する必要があり、エラー与える:
を
インデックスが範囲外であるが非負と コレクションのサイズよりも小さくなければなりません。
private void DataGridView1_KeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter) { e.SuppressKeyPress = true; int iColumn = DataGridView1.CurrentCell.ColumnIndex; int iRow = DataGridView1.CurrentCell.RowIndex; if (iColumn >= DataGridView1.Columns.Count - 2) DataGridView1.CurrentCell = DataGridView1[0, iRow + 1]; else DataGridView1.CurrentCell = DataGridView1[iColumn + 1, iRow]; } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()) } }
0
A
答えて
0
あなたはDataGridView.KeyDown
を使用してこれを処理できますが、ユーザーがセルの編集中がを入力当たるケースを見逃すことでしょう。すべてのケースをキャッチするには、DataGridView
から独自のクラスを派生させ、ProcessCmdKey
を上書きします。上記のコメントに示唆されているロジックを使用して、と入力した場合、最後の行についてが検出された場合は、別の行を追加します。手動でCurrentCell
を変更する心配はありません。基本クラスでその作業自体を処理させます。
public class MyDataGridView : DataGridView
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool enterKeyDetected = keyData == Keys.Enter;
bool isLastRow = this.CurrentCell.RowIndex == this.RowCount - 1;
if (enterKeyDetected && isLastRow)
{
Console.WriteLine("Enter detected on {0},{1}", this.CurrentCell.RowIndex, this.CurrentCell.ColumnIndex);
// Add the new row.
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
あなただけがあなたのDataSource
に応じて、新しい行を追加する方法に注意を払う必要があります。
なし
this.Rows.Add();
DataTable
DataTable dt = (DataTable)this.DataSource; dt.Rows.Add();
BindingList<T>
(List vs BindingListを参照)BindingList<T> bl= (BindingList<T>)this.DataSource; bl.Add(new T());
等
最後には、ちょうどこのカスタムいずれかのインスタンスでDataGridView
のインスタンスを置き換えます。
あなたはDataSource
を持っていない場合は、ちょうどDataGridView.AllowUserToAddRows = true
を設定することNewRow
を追加する別の引き金となりますので、編集十分である、と述べているすべて。
関連する問題
- 1. DataGridViewにデータを追加するユーザーの入力に応じて
- 2. .NET - DataGridView - ユーザーが行を追加したときにデータベースに更新する
- 3. テーブルに新しい行を追加した後にdatagridviewの行リストを更新する方法
- 4. DataGridviewに行を追加してデータを挿入する方法C#
- 5. ダイアログボックスにデータを入力した後に行を追加する
- 6. C#DataGridViewとデータベースに新しい行を追加する(アクセス)
- 7. Excel VBAデータが入力されたときにシートの最後の行に式/日付を追加する
- 8. 新しい行を `DataGridView`に追加し、別の形式で` TableAdapter`からデータを入力してください
- 9. 新しい入力を追加した後に値を入力しない
- 10. C#.NET:配列を追加してユーザーに入力を求める方法は?
- 11. テーブルの最後に新しい列を追加するときのデータ検証リストの更新
- 12. MVC3 .NET - ユーザーが個人情報を入力したときに追加情報を追加する方法
- 13. 新しい列を追加した後にテーブルの各行を更新する
- 14. C#行テキストファイルの最後にテキストを追加する方法は?
- 15. 配列にユーザーが入力した後のC++ランタイムエラー
- 16. WPF DataGrid - ユーザーが新しい行を入力したときに知りたい
- 17. ユーザが入力した後に入力プロンプトに追加する
- 18. 新しいコントロールを追加した後に新しい行を追加する
- 19. C#:DataGridViewでユーザーが入力した値を調整する方法は?
- 20. Pythonリストに新しい行を追加すると、最後の行だけがリストに追加されます
- 21. 新しい行を追加するときにdataGridview列のデフォルト値に問題がある
- 22. 列を追加した後にdb2テーブルに新しく追加された行を取得する方法
- 23. 新しい列を追加できるExcelの入力シート
- 24. グリッドの最後の行として一番下に新しい行を追加
- 25. DataGridviewに新しい行を追加してC#winformで編集するには?
- 26. `DataBindingSource`の` DataGridView`の新たに追加された行にデータを追加します。
- 27. 新しいデータを入力した後、データグリッドビューでデータをリフレッシュする方法
- 28. firebaseユーザーに新しいデータを追加
- 29. 入力後に行を追加する
- 30. リストボックスのデータを新しいものを追加した後に更新する
エラーはどの行に表示されますか?どのくらい次の行を追加していますか? – krillgar
最後の行であるため、次の行はありません。最後の行が選択されている場合、最初から開始することができます。本当に次の行が必要な場合は、最初に行を追加します。 – Ethan
最後の列がヒットしたときに@krillgarエラーがスローされます。 – Patrick