First of all, normally controls like
DataGridView
don't need "refresh". You just change the data in the cells, and the view is "refreshed". (This is so because properties can have side effects programmed in their setters.)
Secondly, there are no effective parent-child relationships between forms (it can still be used, but it is not recommended). If one form is the
Owner
of another, this is absolutely different property, which you, by the way, should always use: it supports the integrity of the views of the same application. Besides, one form is a main one, the one used as a parameter in
Application.Run
. Anyway, these relationships have nothing to do with your application.
As to your particular problem, this is the popular question about form collaboration. The most robust solution is implementation of an appropriate interface in form class and passing the interface reference instead of reference to a "whole instance" of a Form. Please see my past solution for more detail:
How to copy all the items between listboxes in two forms[
^].
Please also see other solutions in this discussion. If the application is simple enough, the solution could be as simple as declaring of some
internal
property in one form and passing a reference to the instance of one form to the instance of another form. For more complex projects, such violation of strictly encapsulated style and
loose coupling could add up the the
accidental complexity of the code and invite mistakes, so the well-encapsulated solution would be preferable.
Please see also:
http://en.wikipedia.org/wiki/Accidental_complexity[
^],
http://en.wikipedia.org/wiki/Loose_coupling[
^].
—SA