DataGridViewから行を削除しようとしています。基本的に、最初の列はコンボボックスであり、ユーザーがコンボボックスから「[Remove]」を選択すると、行全体が削除されます。だから私はこのOnCellEndEditイベントコードを持っている:それはSetCurrentCellAddressCore関数への再入可能呼び出しにつながるのでDataGridViewから行を削除できない
操作は有効ではありません。
if (grid.CurrentCell.ColumnIndex == 0 && grid.CurrentRow.Cells[0].Value.ToString()=="[Remove]") {
grid.EndEdit();
grid.Rows.RemoveAt(grid.CurrentRow.Index);
}
よりもむしろ行を削除、これは例外をスローします。
私は削除する前に、私はこのように、別の列にcurrentRowの移動しようとしました:
DataGridViewRow deleteRow = grid.CurrentRow;
grid.CurrentRow.Selected = false;
grid.Rows[deleteRow+1].Selected = true;
grid.Rows.RemoveAt(deleteRow);
同じ問題。グリッドのAllowUserToDeleteRows属性はtrueです。私はこのコントロールにデータをバインドしていません。
ボタンコントロールのOnClickイベントから行を削除するかのように、問題がCellEndEditイベントに結びついていると思います。大丈夫です。
プログラムでボタンのOnClickイベントをトリガーできますか?どうやって?
それでも、私はエラーを回避する無駄な試みでEndEdit()を追加しました。 –
CellValueChangedイベントの行を削除しようとする可能性があります。http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx編集でグリッドの編集が不安ですイベントは良いアイデアです。 – SwDevMan81
CellValueChangedに移動しました。問題は解決しました。ありがとうございます。 –