[英]Prevent DataGridView from commiting a new blank row
我有一個未綁定的DGV,用戶可以向其中添加行。
默認情況下,網格底部有一個空白行。 讓我們將其稱為X行。當用戶開始編輯X行中的單元格時,將在其下方添加一個新的空白行(X + 1)。
但是在添加新行之后,可以刪除X行中的所有文本,並將其保留為空白。 網格保留有2個連續的空白行。
使用CellEndEdit事件,我試圖:
也不能通過CellValueChanged事件來完成此操作,因為從null到null不被視為更改。
有沒有一種方法可以防止這種行為/確保始終只有一個空白行存在? 謝謝!
第一個錯誤是告訴您,如果其中一個單元格具有當前焦點,則無法刪除該行。 因此,在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);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.