I may have misunderstood your description about one-to-many in first post, if you open frmReturnItem as a dialog you should either use the dialog return result to refresh or a property of the dialog form to determine whether to refresh parent.
I will use some simple code and give examples of each scenario (4 numbered). The actual refresh code I leave up to you, here it is simply written 'me.datagrid1.refresh'.
1. Dialogs, parent open and use dialogresult:
Dim f As New frmReturnItem
If f.ShowDialog = DialogResult.OK Then me.datagrid1.refresh
f.Dispose()
2. Dialogs, parent open and use child form property:
Dim f As New frmReturnItem
If f.ShowDialog = DialogResult.OK Then
If f.WasSaved = True Then me.datagrid1.refresh
End If
f.Dispose()
frmReturnItem would here when a save happened internally set a private boolean flag, through public property this flag is returned to those asking for it:
Private Sub somethingCausedSave()
Me.SavedFlag = True
End Sub
Private SavedFlag As Boolean
Public ReadOnly Property WasSaved() As Boolean
Get
Return SavedFlag
End Get
End Property
3. Multiple forms (not dialog), using a parent form method. Parent code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New frmReturnItem
f.Owner = Me
f.Show()
End Sub
Public Sub RefreshMe()
me.datagrid1.refresh()
End Sub
child code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim p As frmReturn = DirectCast(Me.Owner, frmReturn)
p.RefreshMe()
End Sub
(if the owner form here could be different type forms you would do as abhiramvikrant and let each caller form implement the interface, Owner could then be cast to interface type IRefreshParent and no matter what actual owner form it was you could call the RefreshMe method.)
An added benefit of setting the Owner is that child forms minimize/restore and close when the parent does, but may get in the way, if that is a problem use another property for this purpose.
4. Multiple forms (not dialog), using event. Child code:
Public Event WasSaved()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
RaiseEvent WasSaved()
End Sub
parent code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New frmReturnItem
AddHandler f.WasSaved, AddressOf RefreshMe
f.Show()
End Sub
Public Sub RefreshMe()
me.datagrid1.refresh
End Sub