[英]Why didn't trigger the CellEndEdit event of DataGridView
全部,我知道我們可以為DataGridView
設置可編輯的列。 當完成編輯單元格時。 CellEndEdit
事件將被觸發。 但是我只想知道為什么當我單擊DataGridView
的空白區域時為什么沒有結束單元格的編輯。 並且單擊DataGridView
的區域也不會觸發它。 僅單擊其他單元格即可實現。 真的沒有道理。 有人知道為什么嗎? 以及如何制作? 它嘗試使用DataGridView
的Click事件,但是當我單擊單元格時,它還會觸發DataGridView_click
事件。
private void dgvList_Click(object sender, EventArgs e)
{
dgvFileList.EndEdit();
}
嘗試在網格的MouseDown事件中使用HitTest函數:
void dgvFileList_MouseDown(object sender, MouseEventArgs e) {
DataGridView.HitTestInfo hit = dgvFileList.HitTest(e.X, e.Y);
if (hit.RowIndex < 0 | hit.ColumnIndex < 0) {
dgvFileList.EndEdit();
}
}
在DataGridView控件外部單擊將需要單擊一個可聚焦的控件。
在BeginEdit
之前。 設置變量以標識當前狀態是否為編輯模式。
bBeginEdit = true;
dgvFileList.BeginEdit(false);
在Form_Click事件中
if (bBeginEdit)
{
dgvFileList.EndEdit();
bBeginEdit = false;
}
謝謝,
喬
僅當單元處於編輯模式時,CellEndEdit()才會觸發事件(請參閱Joe.wang的響應)。 您可以簡單地在CellEndEdit()和CellBeginEdit()之前進入編輯模式(來自CellContentClick-handler的代碼,PickNewFont()是FontDialog的包裝):
[...]
else if (String.Compare(rowName, "Font name") == 0) // user clicks on Font-row
{
dgvConfigSettings.BeginEdit(true);
Font newFont = PickNewFont(fontName, fontSize, fontStyle);
dgvConfigSettings.CurrentCell.Tag = newFont; // a bit dirty.... but that way we can pick-up the font in the panel-handler more easily
dgvConfigSettings.CurrentCell.Value = newFont.Name.ToString();
dgvConfigSettings.EndEdit();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.