.NET 4.0 WinForms アプリケーションがあります。アプリケーションのフォームには、グリッド (System.Windows.Forms.DataGridView オブジェクト) が含まれています。
突然、(再現不可能な!) NullReferenceException が発生しました。コール スタックは次のとおりです。
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Windows.Forms.DataGridView.UnwireEditingControlEvents()
at 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)
at System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
at System.Windows.Forms.DataGridView.set_CurrentCell(DataGridViewCell value)
at System.Windows.Forms.DataGridView.OnClearingRows()
at System.Windows.Forms.DataGridViewRowCollection.ClearInternal(Boolean recreateNewRow)
at System.Windows.Forms.DataGridView.RefreshRows(Boolean scrollIntoView)
at System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessListChanged(ListChangedEventArgs e)
at System.Windows.Forms.DataGridView.DataGridViewDataConnection.currencyManager_ListChanged(Object sender, ListChangedEventArgs e)
at System.Windows.Forms.CurrencyManager.OnListChanged(ListChangedEventArgs e)
at System.Windows.Forms.CurrencyManager.List_ListChanged(Object sender, ListChangedEventArgs e)
at System.Windows.Forms.BindingSource.OnListChanged(ListChangedEventArgs e)
at System.Windows.Forms.BindingSource.InnerList_ListChanged(Object sender, ListChangedEventArgs e)
at System.ComponentModel.BindingList`1.OnListChanged(ListChangedEventArgs e)
at System.ComponentModel.BindingList`1.FireListChanged(ListChangedType type, Int32 index)
at System.ComponentModel.BindingList`1.ClearItems()
at System.Collections.ObjectModel.Collection`1.Clear()
at <My Code>;
BindingList 派生リストの Clear メソッドを呼び出します。BindingList から派生したリストは、BindingSource オブジェクトで使用されます。BindingSource オブジェクトは、DataGridView のデータソースです。
理解できません - なぜこれが起こるのですか? そして、なぜそれは時々しか起こらないのですか?(今のところ、問題を一度だけ見たことがあります)。そして、これをどのように回避できますか?