1

.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 のデータソースです。

理解できません - なぜこれが起こるのですか? そして、なぜそれは時々しか起こらないのですか?(今のところ、問題を一度だけ見たことがあります)。そして、これをどのように回避できますか?

4

1 に答える 1