Well...that's pretty simple to understand.
You create an instance of Form3 in Form1 and you attach a handler:
frm3 = new Form3();
frm3.ListViewUpdated += new ListViewUpdatedEventHandler(Frm3_ListViewUpdated1);
But you never show teh form, so the actual Listview never gets updated.
Conversely, in Form2 you create an instance of Form3 and show it, but you never attach a handler:
Form3 frm3 = new Form3(dr);
frm3.Show();
So that version gets it's ListView updated, and (presumably, you don't show it doing that) signals the event, but you don't have a handler so nothing happens.
Have a look at this:
Transferring information between two forms, Part 2: Child to Parent[
^]
The sample code should show you what to do.