I've got the following method to delete a row from a table using a data grid.
When I step through, everything runs fine and the row is deleted. Somewhere ( I've set the debugger to break on thrown and user handled exceptions) I get an error and the debugger breaks on Application.Run in the startup class. I think this is happening because entity framework is using a different thread. What I would like is for the exception to be caught in the event handler. This is the errorCode:private void FieldGrid_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { try { // get ids from row var xref = (FieldMap)e.Row.DataBoundItem; // delete data from database var record = (from sf in this.Entities.Source_Field where sf.SourceTableFieldMapID.Equals(xref.SourceMapId) && sf.DestinationTableFieldMapID.Equals(xref.DestinationMapId) select sf).FirstOrDefault(); this.Entities.Source_Field.DeleteObject(record); this.Entities.SaveChanges(); // rebind this.BindFieldMappings(); } catch (Exception ex) { this.HandleError(ex); } }
Code:"System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.\r\nParameter name: index\r\n at System.Collections.ArrayList.get_Item(Int32 index)\r\n at System.Windows.Forms.DataGridViewRowCollection.SharedRow(Int32 rowIndex)\r\n at System.Windows.Forms.DataGridViewRowCollection.get_Item(Int32 index)\r\n at System.Windows.Forms.DataGridView.ProcessDeleteKey(Keys keyData)\r\n at System.Windows.Forms.DataGridView.ProcessDataGridViewKey(KeyEventArgs e)\r\n at System.Windows.Forms.DataGridView.OnKeyDown(KeyEventArgs e)\r\n at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)\r\n at System.Windows.Forms.DataGridView.ProcessKeyEventArgs(Message& m)\r\n at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)\r\n at System.Windows.Forms.Control.WmKeyChar(Message& m)\r\n at System.Windows.Forms.Control.WndProc(Message& m)\r\n at System.Windows.Forms.DataGridView.WndProc(Message& m)\r\n at System.Windows.Forms.Control .ControlNativeWindow.OnMessage(Message& m)\r\n at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\r\n at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\r\n at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)\r\n at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)\r\n at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)\r\n at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)\r\n at System.Windows.Forms.Application.Run(Form mainForm)\r\n at SFHP_AutoTest.Program.Main() in C:\\TFS\\DEV\\SFHP\\Applications\\Auto QA Win Form\\Program.cs:line 28"


Reply With Quote