我有一个未绑定的DGV用户可以添加行。
默认情况下,网格底部有一个空行。我们称之为X行。 当用户开始编辑行X中的单元格时,会在其下方添加一个新的空白行(X + 1)。
但是在添加新行之后,可以删除行X中的所有文本并将其留空。网格留下2个连续的空白行。
使用CellEndEdit事件,我尝试:
无法使用CellValueChanged事件,因为null到null不被视为更改。
有没有办法防止此行为/确保始终只存在一个空行? 谢谢!
答案 0 :(得分:0)
第一个错误告诉您,如果其中一个单元格具有当前焦点,则无法删除该行。因此,在CellEndEdit
上,将CurrentCell
设置为上面一行中的一个单元格(在尝试删除该行之前)。
编辑:示例代码
public class FormClick : Form {
DataGridView dgv = new DataGridView { Dock = DockStyle.Fill };
DataTable table = new DataTable();
public FormClick() {
table.Columns.Add("A");
table.Columns.Add("B");
dgv.DataSource = table;
Controls.Add(dgv);
dgv.CellEndEdit += dgv_CellEndEdit;
}
void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
DataRow row = ((DataRowView) dgv.Rows[e.RowIndex].DataBoundItem).Row;
bool allEmpty = true;
for (int i = 0; i < table.Columns.Count; i++) {
String s = row[i].ToString();
if (s.Length > 0) {
allEmpty = false;
break;
}
}
if (allEmpty) {
dgv.Rows.RemoveAt(e.RowIndex);
}
}
}