【问题标题】:Why didn't trigger the CellEndEdit event of DataGridView为什么没有触发DataGridView的CellEndEdit事件
【发布时间】:2013-11-28 13:49:48
【问题描述】:

所有,我知道我们可以为DataGridView 设置一个可编辑的列。 当完成编辑单元格时。 CellEndEdit 事件将被触发。 但是我只是想知道为什么单击DataGridView的空白区域时没有结束单元格的编辑。并且单击DataGridView 之外的区域也不会触发它。只有单击其他单元格才能实现。这真的没有意义。谁能知道为什么?以及如何制作?它尝试使用DataGridView 的Click 事件,但是当我单击单元格时,它也会触发DataGridView_click 事件。

    private void dgvList_Click(object sender, EventArgs e)
    {

        dgvFileList.EndEdit();

    }

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    尝试在网格的 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 控件外部单击需要点击可聚焦控件。

    【讨论】:

    • 哇...我以前从未听说过。困扰我的是我无法分辨单元格单击和网格单击事件。现在我很满意!谢谢你 。男人
    • 我也会对EndEdit实现Form_Click事件。谢谢。
    【解决方案2】:

    BeginEdit 之前。设置一个变量来识别当前状态是否为编辑模式。

    bBeginEdit = true;
    dgvFileList.BeginEdit(false);
    

    在 Form_Click 事件中

            if (bBeginEdit)
            {
                dgvFileList.EndEdit();
                bBeginEdit = false;
            }
    

    谢谢,

    【讨论】:

      【解决方案3】:

      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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多