我的datagridview中的错误EditingControlShowing处理程序(.NET)

时间:2009-07-21 22:50:13

标签: .net winforms datagridview

我有一个DataGridView和EditingControlShowing事件的处理程序,用于为某些列添加或删除keyUp事件的处理程序。问题有时是一个没有相关KeyUp处理程序的列实际上触发了处理程序。看起来网格不知道哪个列应该触发哪个处理程序。

问题:当我输入column2(而不是column1)时,删除KeyUp处理程序的行运行到目前为止一直很好。但是然后Control_KeyUp运行了! Control_KeyUp仅适用于Column1。

有没有办法找出列(或单元格?)是否附加了处理程序?

    private void  MyGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
  {
   string columnName = MyGrid.Columns[MyGrid.CurrentCell.ColumnIndex].Name;
   if (columnName == "column1")
        e.Control.KeyPress += new KeyPressEventHandler(Control_KeyUp);
    else
        e.Control.KeyPress -= new KeyPressEventHandler(Control_KeyUp);
    ......

    }

1 个答案:

答案 0 :(得分:1)

以下是您可能会觉得有用的类似问题:

EditingControlShowing events firing multiple times

来自MSDN

  

将事件处理程序附加到   因此,您必须编辑控件   采取预防措施,以避免附着   多次使用相同的处理程序。至   避免这个问题,删除处理程序   在你附上之前的事件   事件的处理程序。这将   如果处理程序是,防止重复   已经附在活动上,但是   否则将无效。

希望其中一些有用。