I have a [Control](https://msdn.microsoft.com/en-us/library/system.windows.forms.control%28v=vs.110%29.aspx) like a [DataGridView](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview(v=vs.110).aspx) and several events declared for that.

For example:
[CellEndEdit](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellendedit(v=vs.110).aspx), [CellLeave](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellleave(v=vs.110).aspx), [RowLeave](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowleave(v=vs.110).aspx), [RowsAdded](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowsadded(v=vs.110).aspx), [SelectionChanged](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.selectionchanged(v=vs.110).aspx), ... .

Now, when I want to insert several records to the grid, there was also [SelectionChanged](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.selectionchanged(v=vs.110).aspx) for every one of them is executed, while I did not want to call [SelectionChanged](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.selectionchanged(v=vs.110).aspx) events!
This is only an example of my problems in events.

In summary, my question is, How to know this event handling causes is a user or application methods are executed that ?
In other words, How to know this [SelectionChanged](https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.selectionchanged(v=vs.110).aspx) event runs by user or a method called that ?