That's a poor idea, even if it did work for you. The problem is that by making your form controls
public
you "lock" the design of the form, and tie the two forms together so that they can't be changed without considering the effects on the other. It is a much, much better idea to keep the controls private (as they are by default) and only allow access via properties: in this case a public DataTable property in the form the above code is executing in. You then signal an event, which the main form handles, causing it to fetch the data if it needs it.
See here:
Transferring information between two forms, Part 2: Child to Parent[
^] - the parent is the main form, the child is teh one providing the DataTable.