簡體   English   中英

為什么不觸發DataGridView的CellEndEdit事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM