none
Datagridview出现System.NullReferenceException RRS feed

  • 问题

  •    在 System.Windows.Forms.DataGridView.EndEdit(DataGridViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave, Boolean keepFocus, Boolean resetCurrentCell, Boolean resetAnchorCell)
       在 System.Windows.Forms.DataGridView.CommitEditForOperation(Int32 columnIndex, Int32 rowIndex, Boolean forCurrentCellChange)
       在 System.Windows.Forms.DataGridView.ScrollIntoView(Int32 columnIndex, Int32 rowIndex, Boolean forCurrentCellChange)
       在 System.Windows.Forms.DataGridView.TabToNextCell()
       在 System.Windows.Forms.DataGridView.ProcessTabKey(Keys keyData)
       在 System.Windows.Forms.DataGridView.ProcessDialogKey(Keys keyData)
       在 System.Windows.Forms.Control.ProcessDialogKey(Keys keyData)
       在 System.Windows.Forms.TextBoxBase.ProcessDialogKey(Keys keyData)
       在 System.Windows.Forms.Control.PreProcessMessage(Message& msg)
       在 System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
       在 System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

    当我在CellEndEdit事件中设置datagirdview1.CurrentCell.ErrorText = "error"就莫名其妙的就发生异常了;

    后来改成在 EditingControlShowing事件中:

        void dataGridView2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                var tb = e.Control as TextBox;
                 tb.LostFocus -= tb_LostFocus;             tb.LostFocus += tb_LostFocus;       
         }

     void tb_LostFocus(object sender, EventArgs e)
      {

    // .... 

          datagirdview1.CurrentCell.ErrorText = serr;

    }

    然后编辑cell,再按“Tab”键,同样会出现上面的异常。

    补充说明:

    这个异常不是在上面的事件中发生的,而是在tb_LostFocus事件执行完或者EndEdit事件执行完发生的。

    2016年9月5日 6:22

全部回复

  • 你好,

    根据你的错误信息,应该是某个对象的是NULL导致的,我建议你打个断点,检查看看是那个对象的值是NULL, 然后加个判断来避免它。例如:

    if(datagirdview1.CurrentCell.ErrorText != null) {

    datagirdview1.CurrentCell.ErrorText = serr; }


    Best regards,

    Cole Wu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年9月5日 7:08
    版主
  •   var tb = e.Control as TextBox;

    这一句执行完成后,ta可能是null,在此句放个断点,看下e.Control是什么类型


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年9月5日 7:15
  • 这个异常不是在上面的事件中发生的,而是在tb_LostFocus事件执行完或者EndEdit事件执行完发生的。
    2016年9月5日 9:17
  • 这个异常不是在上面的事件中发生的,而是在tb_LostFocus事件执行完或者EndEdit事件执行完发生的。
    2016年9月5日 9:17
  • 你好,

    请问你有使用F11 来进行调试你的代码吗? 如有的话,你那行代码出错了?

    Best regards,

    Cole Wu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年10月11日 3:14
    版主